I have been trying to to figure out how to define a nested URL namespace (which look:like:this
) in a Django URLConf.
Before this, I figured out how to do a basic URL namespace and came up with this simple example snippet, containing what you might put in a urls.py
file:
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 the deduction of which the Django documentation was, in this case, not at all helpful. While Django's doc is fantastic in all other respects, and this is an exception to the rule, there is even less information about defining nested URL namespaces.
Instead of posting my spaghettified attempts† to figure this out, I thought I might ask if anyone has, or knows of, a straightforwardly cogent and/or self-explanatory example of a URLconf that defines a nested namespace, that they could share.
Specifically I am curious about the nested parts that prefix the view: need they all be installed Django apps?
†) For the curious, here's a (probably somewhat inscrutable) example: https://i.sstatic.net/53gNL.jpg. I was trying to get the URLs printed out in red and green at the bottom to be named testapp:views:<viewname>
instead of just testapp:<viewname>
.