在Django中,如何直接从urls.py进行简单重定向?我自然是一个井井有条的人,赞成DRY原理,所以我想基于它的命名url模式获取目标,而不是对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已从True更改为False。因此,如果你未指定permanent关键字参数,则可能会看到以下警告:
permanent
RemovedInDjango19Warning:在Django 1.9中,“ RedirectView.permanent”的默认值将从True更改为False。设置一个明确的值可使此警告静音。