从Django中的urls.py直接重定向到命名url模式?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

在Django中,如何直接从urls.py进行简单的重定向?当然,我是一个组织良好的人,喜欢干的原则,所以我想要得到的目标是基于它的命名为url模式,而不是硬编码的网址。

提问于
用户回答回答于

如果在Django 1.4或1.5上,可以这样做:

from django.core.urlresolvers import reverse_lazy
from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'^some-page/$', RedirectView.as_view(url=reverse_lazy('my_named_pattern'), permanent=False)),
    ...

如果使用的是Django 1.6或更高版本,则可以这样做:

from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
    ...

在Django 1.9中,默认值为permanent从真变成假。因此,如果不指定permanent关键字参数,可能会看到以下警告:

RemovedInDjango19Warning:在Django 1.9中,‘RedirectView.Permanent’的默认值将从True更改为false。设置一个显式值以沉默此警告。

用户回答回答于

这对我有用。

from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'^some-page/$', RedirectView.as_view(url='/')),
    ...

在上面的例子中'/'这意味着它将重定向到索引页,在那里您也可以添加任何url模式。

扫码关注云+社区