好的,如果你去这里的文件: https://docs.djangoproject.com/en/dev/topics/http/shortcuts/
然后向下滚动以查看redirect()的最后一个示例 “默认情况下,redirect()返回一个临时重定向。所有上述形式都接受一个永久参数;如果设置为True,将返回一个永久重定向:”
现在,临时重定向和永久重定向之间有什么区别?我正在使用它,以便当用户登录并进行身份验证时,然后将其重定向到登录页面。我应该使用HttpResponseRedirect()吗?使用redirect()而不是HttpResponseRedirect()会带来什么好处吗?
答案 0 :(得分:7)
有两种方法可以返回301永久重定向:
from django.shortcuts import redirect
def my_view(request):
# some code here
return redirect('/some/url/', permanent=True)
https://docs.djangoproject.com/en/1.5/topics/http/shortcuts/#redirect
或:
from django.http import HttpResponsePermanentRedirect
def my_view(request):
# some code here
return HttpResponsePermanentRedirect('/some/url')
答案 1 :(得分:6)
只需在Brandon的帖子中添加一条关于您的问题的说明,两者之间的区别是什么。临时和永久重定向之间的主要区别在于第三方如何看待它。 如果Google看到永久重定向,则可能会认为旧网站已消失,并会更新所有匹配以直接访问新网址。有人说Google倾向于永久重定向,因为垃圾邮件发送者经常使用临时重定向。
临时重定向的情况例如是在您自己的站点上链接到下载镜像/静态文件服务器的URL的内部重写。在这种情况下,重定向站点可能保持不变,而其他服务器地址可能会更改(例如,主机静态内容,无论哪里最便宜)。使用永久重定向可能会带来问题(想想手机上的播客播放器会记住这些重定向,并且在您移动静态文件服务器时无法识别它。)