会话未保存

时间:2019-07-24 12:26:55

标签: django django-middleware django-sessions

添加了中间件后,如果用户尚未登录,则会话将停止保存,该中间件可重定向到登录页面。在添加中间件之前,它一直在工作。

我尝试使用request.sessions.save()和request.session.modified = True,但无法解决问题

这是我的中间件:

class LoginMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        if "name" not in request.session:
            if request.GET.get("login_name"):
                request.session["name"] = request.GET.get("login_name")
                request.session.modified = True
                response = response = self.get_response(request)
            else:
                response = render(request, 'login.html')
        else:
            response = self.get_response(request)
        return response

这是我的登录视图:

def Login(request):
    if "name" in request.session:
        return foo(request)
    else:
        if request.GET.get("login_name"):
            request.session["name"] = request.GET.get("login_name")
            request.session.modified = True
        else:
            return render(request, 'login.html')
        return foo(request)

这是我的登录HTML:

      <form action="" method="GET">
        <input type="text" name="login_name" required>
        <button type="submit" class="btn btn-success">Submit</button>
      </form>

这是我的网址:

urlpatterns = [
    path('', views.Login, name='login'),
url(foo', views.foo, name='foo'),
]

中间件被添加到设置中,并且被调用。如果没有request.session [“ name”],它应该重定向到登录页面。 当我从其他视图调用request.session [“ name”]时,它返回None。以前,它返回保存的名称。 有什么建议吗?

0 个答案:

没有答案