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 @   foreast  阅读(1870)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示