添加了中间件后,如果用户尚未登录,则会话将停止保存,该中间件可重定向到登录页面。在添加中间件之前,它一直在工作。
我尝试使用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。以前,它返回保存的名称。 有什么建议吗?