在Django的LOGIN_INDEX装饰器中抑制“?Next=Blah”行为

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我喜欢Django的@登录_需要装饰,但有一件事我不知道怎么做。

如果未经身份验证的用户尝试访问@login_required page (e.g. "/private-stuff/"),我想把它们回主页(例如“/home/”)。但是我不想在url后面附加一个“?Next=”参数。换句话说,我只想重定向到“/home/”,而不是“/home/?Next=/私有-Things/”。

我该怎么做?

提问于
用户回答回答于

创建一些中间件,以便在设置了查询字符串时删除它:

from django.conf import settings
from django.http import HttpResponseRedirect

class RemoveNextMiddleware(object):
    def process_request(self, request):
        if request.path == settings.LOGIN_URL and request.GET.has_key('next'):
            return HttpResponseRedirect(settings.LOGIN_URL)

然后,将导入路径添加到该中间件中。MIDDLEWARE_CLASSES...。请记住,在请求阶段,中间件首先被处理到最后或自顶向下,换句话说。这在请求阶段应该比较早,但是可能需要稍微利用它,看看什么可以和不能在它之前出现。

用户回答回答于

@decorators.login_required(redirect_field_name=None)

扫码关注云+社区