Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 关于@login\u必需的装饰器和重定向类型的问题_Django_Seo - Fatal编程技术网

Django 关于@login\u必需的装饰器和重定向类型的问题

Django 关于@login\u必需的装饰器和重定向类型的问题,django,seo,Django,Seo,默认情况下,当使用@login\u required装饰器时,Django在将未经身份验证的用户重定向到登录页面时执行302(临时)重定向。我与一家搜索引擎优化公司合作(我自己对这个话题一无所知),他坚持301(永久)重定向对他正在做的工作至关重要 在使用@login_required decorator时,有没有强制Django执行301重定向 再次感谢 使用 ,而 其中 因此,不能仅使用login\u required更改重定向类型。您可以编写自己的login\u所需的decorato

默认情况下,当使用
@login\u required
装饰器时,Django在将未经身份验证的用户重定向到登录页面时执行302(临时)重定向。我与一家搜索引擎优化公司合作(我自己对这个话题一无所知),他坚持301(永久)重定向对他正在做的工作至关重要

在使用@login_required decorator时,有没有强制Django执行301重定向

再次感谢

  • 使用
  • ,而
  • 其中

因此,不能仅使用
login\u required
更改重定向类型。您可以编写自己的login\u所需的decorator来提供301重定向(尽管在这里使用它是有争议的)

所需的
@login\u
装饰程序使用
重定向\u至登录
视图,该视图返回Django
HttpResponseRedirect
对象以将用户重定向到登录页面。正如您所提到的,这个对象表示302重定向。还有一个可供选择的重定向对象,HttpResponsePermantRedirect
,不过您需要编写自己的decorator来使用它

当然,编写自己的装饰程序是可能的。但在我看来,这是一种不好的做法。这不仅是因为它将您的应用程序绑定到身份验证模块的特定实现,还因为302重定向实际上是在这种情况下使用的正确重定向


事实上,页面并没有“永久移动”。相反,用户只需在再次访问同一URL之前对自己进行身份验证。因此,重定向不是永久性的,因为页面实际上没有“移动”。

301永久重定向在这里似乎是错误的。假设您正在保护URL
/secret sail/recipe
。如果我没有登录并点击
/secret saint/recipe
,那么我应该被重定向到登录页面。但这一页并没有永久移动
/secret saint/recipe
仍然是一个有效的URL(我登录后应该会被重定向回该URL)。301在页面移动且在旧URL无效时使用。典型的SEO专家:不知道他在说什么…:-)顺便说一句,浏览器通常会缓存这些永久重定向。因此,在这种情况下,permenent_重定向可能会在用户浏览器中出现重定向循环。