Django中判断用户是否登录

1.is_authenticate 判断用户是否登录

介绍:

  • Django用户认证系统提供了方法request.user.is_authenticated()来判断用户是否登录。
  • 如果通过登录验证则返回True。反之,返回False。
  • 缺点:登录验证逻辑很多地方都需要,所以该代码需要重复编码好多次。
class UserInfoView(View):
    """用户中心"""

    def get(self, request):
        """提供个人信息界面"""
        if request.user.is_authenticated():
            return render(request, 'user_center_info.html')
        else:
            return redirect(reverse('users:login'))

2. Django框架判断登陆的简化方案:

使用 LoginRequiredMixin 实现:

使用方法:在需要登录才能访问的视图中继承这个类,然后在setting.py中配置LOGIN_URL = '登录的url'就行了

from django.contrib.auth.mixins import LoginRequiredMixin

class UsernameCountView(LoginRequiredMixin, View):
# 判断用户是否登录,没有登录后重定向到登录页面的url
LOGIN_URL='/login/'

访问这个视图后,会先判断是否登录,如果未登录会重定向到配置中LOGIN_URL的url

为了实现登录后定位到未登录时访问的地址,在登录的接口中,判断next属性,如果有,重定向到next所指向的位置

# 响应登录结果
next = request.GET.get('next')
if next:
    response = redirect(next)
else:
    response = redirect(reverse('contents:index'))

原理:LoginRequiredMixin中在实现重定向到登录页面时,会在登录的url中拼接上 ?next="当前访问地址"   这样,在登录接口我们就可以获取到这个地址,从而在登录成功后重定向到这个地址

 

posted @ 2021-03-27 14:16  foreast  阅读(1764)  评论(0编辑  收藏  举报