在Django中,如何直接从urls.py进行简单的重定向?当然我是一个组织良好的人,喜欢DRY原则,所以我想根据它的命名url模式得到目标,而不是硬编码url.
thn*_*nee 182
如果您使用的是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)),
...
Run Code Online (Sandbox Code Playgroud)
如果您使用的是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)),
...
Run Code Online (Sandbox Code Playgroud)
在Django 1.9中,默认值permanent已从True更改为False.因此,如果您未指定permanent关键字参数,则可能会看到以下警告:
RemovedInDjango19Warning:在Django 1.9中,'RedirectView.permanent'的默认值将从True变为False.设置显式值以使此警告静音.
Jay*_*odi 28
这适合我.
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url='/')),
...
Run Code Online (Sandbox Code Playgroud)
在上面的示例中'/'意味着它将重定向到索引页面,您还可以在其中添加任何URL模式.
Glu*_*tor 12
对于Django v2 +
from django.contrib import admin
from django.shortcuts import redirect
from django.urls import path, include
urlpatterns = [
# this example uses named URL 'hola-home' from app named hola
# for more redirect's usage options: https://docs.djangoproject.com/en/2.1/topics/http/shortcuts/
path('', lambda request: redirect('hola/', permanent=False)),
path('hola/', include("hola.urls")),
path('admin/', admin.site.urls),
]
Run Code Online (Sandbox Code Playgroud)
如果您不支持RedirectView,则在旧版本的django中支持这种方式
在view.py中
def url_redirect(request):
return HttpResponseRedirect("/new_url/")
Run Code Online (Sandbox Code Playgroud)
在url.py中
url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),
Run Code Online (Sandbox Code Playgroud)
你可以使用它永久化 HttpResponsePermanentRedirect
小智 5
我试图将所有404重定向到主页,以下内容效果很好:
from django.views.generic import RedirectView
...
under urlpatterns, added:
url(r'^.*/$', RedirectView.as_view(url='/home/')),
url(r'^$', RedirectView.as_view(url='/home/')),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59321 次 |
| 最近记录: |