自动URL namspace resolution
django-namespaced的Python项目详细描述
django支持帮助应用程序发现其当前 名称空间,并以稳定的方式引用它们自己,即使有更多 URL模式中同一模块的多个实例。
但是,django不会自动设置current_app上下文 这意味着应用程序将实际解析带名称空间的url 最后一次宣布的例子。
这个上下文处理器将细节挖掘出来。
用法
需要将上下文处理器添加到模板配置中。这个 粗鲁的做法如下:
TEMPLATES[0]['OPTIONS']['context_processors'].append( 'namespaced.context_processors.namespaced')
为此使用上下文处理器有点可疑,而且通常 中间件将是编辑请求的正确位置。然而中间商 在URL解析未匹配的阶段执行,并将 遍历所有url,即使它们不会被使用。这段代码主要是 不管怎样,在观点上是相关的。
这使您能够将同一应用程序的两个独立实例放在两个中 不同的网址。通常django总是通过 app name,它将破坏之前任何一个 实例。假设我们在应用程序中有这个功能:
{% url 'myapp:index' %}
为了使这两个实例都能工作,urls.py应该看起来像 像这样:
urlpatterns = [ url(r'^first/', include('myapp.urls', namespace='first', app_name='myapp')), url(r'^last/', include('myapp.urls', namespace='last', app_name='myapp)), ]
这些应用程序可以用myapp:引用它们自己,用优先引用彼此:和 最后:。在其余部分中使用显式名称很可能是有意义的 项目的一部分。
目前,没有测试使用无名称空间。