Django如何实现已登录用户访问登录页面时自动跳转?
解决方案
你只需要在视图函数的入口位置增加已登录状态校验即可,Django 自带的request.user.is_authenticated属性可以直接判断当前访问用户的登录状态,修改后的代码如下:
def login(request): # 已登录用户直接跳转,不进入登录流程 if request.user.is_authenticated: # 可根据需求替换为其他跳转地址 return redirect('/') if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') user = authenticate(request, username=username, password=password) if user is not None: logIn(request, user) return redirect('/') else: messages.info(request, 'username or password is wrong') context = {} return render(request, 'account/login.html', context)
逻辑说明
- 新增的判断优先于所有业务逻辑执行,不管用户是通过GET请求访问登录页面,还是手动构造POST请求提交登录数据,只要处于登录状态都会被直接拦截跳转
- 如果你后续需要调整跳转目标,直接修改
redirect()方法内的参数即可
内容的提问来源于stack exchange,提问作者user16735766
相关产品推荐
相关产品推荐

