Bai*_*ose 244
这很简单:
from django.http import HttpResponseRedirect
def myview(request):
...
return HttpResponseRedirect("/path/")
Run Code Online (Sandbox Code Playgroud)
有关Django官方文档的更多信息
更新:Django 1.0
现在使用Django显然有更好的方法generic views.
示例 -
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
(r'^one/$', redirect_to, {'url': '/another/'}),
#etc...
)
Run Code Online (Sandbox Code Playgroud)
通用视图文档中还有更多内容.信用 - CarlesBarrobés.
更新#2:Django 1.3+
在Django 1.5中,redirect_to不再存在,并且已被RedirectView取代.感谢Yonatan
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^one/$', RedirectView.as_view(url='/another/')),
)
Run Code Online (Sandbox Code Playgroud)
Car*_*bés 113
根据您的需要(即如果您不想进行任何其他预处理),只需使用Django的redirect_to通用视图就更简单了:
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
(r'^one/$', redirect_to, {'url': '/another/'}),
#etc...
)
Run Code Online (Sandbox Code Playgroud)
有关更多高级示例,请参阅文档
对于Django 1.3+使用:
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^one/$', RedirectView.as_view(url='/another/')),
)
Run Code Online (Sandbox Code Playgroud)
Ted*_*ddy 38
实际上,每个重定向都有一个简单的方法 - 您可以直接在urls.py以下位置执行此操作:
from django.http import HttpResponsePermanentRedirect
urlpatterns = patterns(
'',
# ...normal patterns here...
(r'^bad-old-link\.php',
lambda request: HttpResponsePermanentRedirect('/nice-link')),
)
Run Code Online (Sandbox Code Playgroud)
目标可以是可调用的,也可以是字符串,这就是我在这里使用的.
Ken*_*nnu 26
从Django 1.1开始,您还可以使用更简单的重定向快捷方式:
from django.shortcuts import redirect
def myview(request):
return redirect('/path')
Run Code Online (Sandbox Code Playgroud)
它还需要一个可选的permanent = True关键字参数.
odi*_*ont 14
如果要重定向整个子文件夹,RedirectView中的url参数实际上是内插的,因此您可以在urls.py以下位置执行以下操作:
from django.conf.urls.defaults import url
from django.views.generic import RedirectView
urlpatterns = [
url(r'^old/(?P<path>.*)$', RedirectView.as_view(url='/new_path/%(path)s')),
]
Run Code Online (Sandbox Code Playgroud)
在?P<path>您捕捉将被送入RedirectView.这个捕获的变量将在url您给出的参数中被替换,/new_path/yay/mypath如果您的原始路径是,则为我们提供/old/yay/mypath.
….as_view(url='…', query_string=True)如果要复制查询字符串,也可以执行此操作.
小智 10
使用Django 1.3版,基于类的方法是:
from django.conf.urls.defaults import patterns, url
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-url/$', RedirectView.as_view(url='/redirect-url/'), name='some_redirect'),
)
Run Code Online (Sandbox Code Playgroud)
此示例位于urls.py中
谨防.我在开发服务器上执行此操作,并希望稍后更改它.
我不得不清除我的缓存来改变它.为了避免将来发生这种令人头疼的问题,我能够像以下那样暂时做到:
from django.views.generic import RedirectView
url(r'^source$', RedirectView.as_view(permanent=False,
url='/dest/')),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129266 次 |
| 最近记录: |