从RedirectView重定向到包含的URL

时间:2014-08-27 21:48:15

标签: django

假设我的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)),
)

1 个答案:

答案 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)),
)