我需要2个网址来显示完全相同的视图和网址格式,所以在我的主urls.py文件中,我这样做:
url(r'^evenements/', include('project.events.urls', namespace='events')),
url(r'^tourisme/evenements/', include('project.events.urls', namespace="tourisme_event", app_name='events')),
然后在我的活动应用中,我在urls.py
中有这个urlpatterns = patterns('',
url(r'^$', views.listing, name='index'),
url(r'^(?P<slug>.*)/$', views.detail, name='detail'),
)
现在我想要实现的是为两个网址显示完全相同的视图,但我需要链接在模板中使用此功能:
{% url 'events:detail' event.event.slug %}
根据我的理解,使用&#34; app_name&#34;应该允许我这样做,但这里发生了不同的事情:
{% url %}
标记的网址{% url %}
标记的网址{% url %}
标记的网址我无法在两个页面上显示不同的网址。我做了这个答案中所说的:https://stackoverflow.com/a/8039846/2174532
知道为什么那不起作用?顺便说一下,我在Django 1.6上。
由于
答案 0 :(得分:1)
由于您尚未使用1.9,因此需要手动将命名空间提示设置为当前实例命名空间。您可以将current_app
传递给render()
(或直接传递给您的上下文实例)来执行此操作:
render(request, 'template.html', current_app=request.resolver_match.namespace)
在1.8中,您设置request.current_app
而不是将命名空间传递给上下文。在1.9中,这是为您完成的。
您需要在两个包含中将app_name
设置为'events'
。 Django将查找应用程序命名空间,如果没有找到应用程序命名空间,则只返回实例命名空间。如果将实例名称空间命名为没有app_name
与应用程序名称空间相同,则您永远无法对其进行反转。