假设我在我的 Django 1.6 项目中有这样一个 URL 设置:
urlpatterns = patterns('',
url(r'^some-path/', include('someapp.urls')),
url(r'^$', RedirectView.as_view(url='some-path/', permanent=False)),
)
…但我想改为将“some-path”更改为“changed-path”,并且在这个过程中意识到我已经将它硬编码在一个额外的地方: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)),
)
最佳答案
首先,您必须从 someapp 转到您的 urls.py
文件并获取您的基本 url 的名称。
让我们假设它是这样的:
# someapp/urls.py
urlpatterns = patterns(
'someapp.views',
url(r'^$', 'your view', name='foo'),
...
)
现在在您的主 urls 文件中,您可以编写如下所有内容:
# 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)),
)
关于django - 从 RedirectView 重定向到包含的 URLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25537502/