Я пытался выяснить, как определить вложенное пространство имен URL (которое look:like:this
) в Django URLConf.
Перед этим я выяснил, как создать простое пространство имен URL, и придумал простой пример фрагмента, содержащий то, что вы можете поместить в файл urls.py
:
from django.conf.urls import patterns, include, url
# you can only define a namespace for urls when calling include():
app_patterns = patterns('',
url(r'^(?P<pk>[\w\-]+)/$', 'yourapp.views.your_view_function',
name="your-view"),
)
urlpatterns = patterns('',
url(r'^view-function/', include(app_patterns,
namespace='yournamespace', app_name='yourapp')),
)
"""
You can now use the namespace when you refer to the view, e.g. a call
to 'reverse()':
# yourapp/models.py
from django.core.urlresolvers import reverse
# ...
class MyModel(models.Model):
def get_absolute_url(self):
return reverse('signalqueue:exception-log-entry', kwargs=dict(pk=self.pk))
"""
... w/r/t, вывод, из которого документация Django, в данном случае, совсем не полезна. Хотя Django doc является фантастическим во всех других отношениях, и это исключение из правил, информации об определении вложенных пространств имен URL еще меньше.
Вместо того, чтобы публиковать мои спагетизированные попытки †, чтобы выяснить это, я подумал, что могу спросить, есть ли у кого-либо прямой или убедительный пример убедительного и/или самоочевидного примера URLconf, который определяет вложенное пространство имен, которым они могут поделиться.
В частности, мне любопытно, какие вложенные части ставят префикс представления: нужно ли устанавливать все приложения Django?
†) Для любопытных приведем (возможно, несколько непонятный) пример: http://imgur.com/NDn9H.Я пытался распечатать URL-адреса красным и зеленым цветом внизу, чтобы они назывались testapp:views:<viewname>
вместо просто testapp:<viewname>
.