一尘不染

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

django

在Django中,如何直接从urls.py进行简单重定向?我自然是一个井井有条的人,赞成DRY原理,所以我想基于它的命名url模式获取目标,而不是对URL进行硬编码。


阅读 361

收藏
2020-03-27

共1个答案

一尘不染

如果你使用的是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已从True更改为False。因此,如果你未指定permanent关键字参数,则可能会看到以下警告:

RemovedInDjango19Warning:在Django 1.9中,“ RedirectView.permanent”的默认值将从True更改为False。设置一个明确的值可使此警告静音。

2020-03-27