假设我的Django 1.6项目中有这样的URL设置:
urlpatterns = patterns('',
url(r'^some-path/', include('someapp.urls')),
url(r'^$', RedirectView.as_view(url='some-path/', permanent=False)),
)
...但我想改变一些路径"改变路径"改变路径"相反,并且在此过程中意识到我已经在额外的地方硬编码:RedirectView
设置!
有没有正确的方法来做这样的事情,倒转到包含的URL包?
# NOT WORKING! Django ignores `name=` when using `include()`
urlpatterns = patterns('',
url(r'^changed-path/', include('someapp.urls'), name='foo'),
url(r'^$', RedirectView.as_view(pattern_name='foo', permanent=False)),
)
答案 0 :(得分:3)
首先,您必须从someapp转到您的urls.py
文件,并获取您的基本网址的名称。
我们假设它是这样的:
# someapp/urls.py
urlpatterns = patterns(
'someapp.views',
url(r'^$', 'your view', name='foo'),
...
)
现在在你的主网址文件中,你可以写下这样的内容:
# WORKING! Because Django likes namespaces
urlpatterns = patterns('',
url(r'^changed-path/', include('someapp.urls', namespace='bar')),
url(r'^$', RedirectView.as_view(pattern_name='bar:foo', permanent=False)),
)