Rozważmy że obejmują przestrzeni nazw wielokrotnego użytku aplikację:Jak zrobić odwrotnego wyszukiwania adresów URL w Django przestrzeni nazw wielokrotnego stosowania
urlpatterns = patterns('',
# ella urls
url('^ella/', include('ella.core.urls', namespace="ella")),
)
Teraz aplikacje Ella ma adresy URL tak:
urlpatterns = patterns('',
url(r'^(?P<category>[a-z0-9-/]+)/$', category_detail, name="category_detail"),
# object detail
url(r'^(?P<category>[a-z0-9-/]+)/(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/(?P<content_type>[a-z0-9-]+)/(?P<slug>[a-z0-9-]+)/$',
object_detail, name="object_detail")
)
Teraz, nazywając {% url ella:category_detail category="cat" %}
działa w porządku. Jednak, gdy obiekt próbuje wygenerować link do niego w szczegółach, wywołuje
from django.core.urlresolvers import reverse
url = reverse('object_detail', kwargs={'required' : 'params'})
ten nie działa, chyba że przepisany jako
from django.core.urlresolvers import reverse
url = reverse('ella:object_detail', kwargs={'required' : 'params'})
Więc jeśli rozumiem go poprawnie, tym wielokrotnego zastosowania do nazw łamie wszystkie wewnętrzne odwrotne() wewnątrz danej aplikacji.
Czy to prawda? Co przeoczyłem? Czy istnieje jakiś sposób?
+1 Już miałem zadać to samo pytanie –