我一直在试图弄清楚如何look:like:this
在 Django URLConf 中定义一个嵌套的 URL 命名空间(which )。
在此之前,我想出了如何创建一个基本的 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 的文档在所有其他方面都很棒,而且这是一个例外,但关于定义嵌套 URL 命名空间的信息就更少了。
我没有发布我的意大利面条式的尝试†来解决这个问题,我想我可能会问是否有人拥有或知道一个直接有说服力和/或不言自明的 URLconf 示例,该示例定义了一个他们可以共享的嵌套命名空间。
具体来说,我对视图前缀的嵌套部分感到好奇:它们都需要安装 Django 应用程序吗?
†)对于好奇,这里有一个(可能有点难以理解)的例子:http: //imgur.com/NDn9H。我试图在底部以红色和绿色打印出 URL,testapp:views:<viewname>
而不是仅仅命名为testapp:<viewname>
.