django:临时重定向和永久重定向有什么区别?

时间:2013-09-29 00:55:18

标签: django redirect django-views httpresponse http-redirect

好的,如果你去这里的文件: https://docs.djangoproject.com/en/dev/topics/http/shortcuts/

然后向下滚动以查看redirect()的最后一个示例 “默认情况下,redirect()返回一个临时重定向。所有上述形式都接受一个永久参数;如果设置为True,将返回一个永久重定向:”

现在,临时重定向和永久重定向之间有什么区别?我正在使用它,以便当用户登录并进行身份验证时,然后将其重定向到登录页面。我应该使用HttpResponseRedirect()吗?使用redirect()而不是HttpResponseRedirect()会带来什么好处吗?

2 个答案:

答案 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')

https://docs.djangoproject.com/en/1.5/ref/request-response/#django.http.HttpResponsePermanentRedirect

答案 1 :(得分:6)

只需在Brandon的帖子中添加一条关于您的问题的说明,两者之间的区别是什么。临时和永久重定向之间的主要区别在于第三方如何看待它。 如果Google看到永久重定向,则可能会认为旧网站已消失,并会更新所有匹配以直接访问新网址。有人说Google倾向于永久重定向,因为垃圾邮件发送者经常使用临时重定向。

临时重定向的情况例如是在您自己的站点上链接到下载镜像/静态文件服务器的URL的内部重写。在这种情况下,重定向站点可能保持不变,而其他服务器地址可能会更改(例如,主机静态内容,无论哪里最便宜)。使用永久重定向可能会带来问题(想想手机上的播客播放器会记住这些重定向,并且在您移动静态文件服务器时无法识别它。)