• Django内置用户类AbstractUser与内置认证校验系统


    Django内置用户类AbstractUser与内置认证校验系统
    
    内置用户类AbstractUser
    我们在之前讲过了model模型的作用和父类的作用,这次介绍的内置用户类AbstractUser就是Django内置的一个关于用户操作的类,它极大地方便了我们对model模型中对User用户类的设计。而所谓内置用户类的本质也就是一个封装好的父类,所以使用起来是相当的方便。
    
    #导入AbstractUser类
    from django.contrib.auth.models import AbstractUser
    
    #直接继承就可以了,如果有需要就向寻常model一样写字段就可以
    class User(AbstractUser):
        pass
    
    我们通过查看AbstractUser的源码可以知道它设有几个字段
    
    	#用户名
    username = models.CharField(
            _('username'),
            max_length=150,
            unique=True,
            help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
            validators=[username_validator],
            error_messages={
                'unique': _("A user with that username already exists."),
            },
        )
        
        #名
        first_name = models.CharField(_('first name'), max_length=30, blank=True)
        
        #姓
        last_name = models.CharField(_('last name'), max_length=150, blank=True)
        
        #邮箱
        email = models.EmailField(_('email address'), blank=True)
        
        #权限
        is_staff = models.BooleanField(
            _('staff status'),
            default=False,
            help_text=_('Designates whether the user can log into this admin site.'),
        )
        
        #激活
        is_active = models.BooleanField(
            _('active'),
            default=True,
            help_text=_(
                'Designates whether this user should be treated as active. '
                'Unselect this instead of deleting accounts.'
            ),
        )
        
        #日期
        date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
    
    内置认证校验系统
    django自带的用户认证校验系统较为简单,主要就是认证用户名密码的正确与否
    首先要在settings里面配置
    
    #使用自带的认证系统
    AUTH_USER_MODEL = "user.User"
    
    这是配合自带的用户类AbstractUser一起使用的
    通常使用在类视图中的post方法校验用户登录等操作
    在view中的具体代码如下
    
    class LoginView(View):
    
        def get(self,request):
            #逻辑代码
            return render(request,'login.html')
    
        def post(self,request):
            # 获取前端传递过来的用户名和密码
            username = request.POST.get('username')
            pwd = request.POST.get('pwd')
            record = request.POST.get('record')
            # 进行数据校验
            if not all([username,pwd]):
                return HttpResponse('数据输入不完整')
            # 验证用户名和密码是否正确
            user = authenticate(username=username,password=pwd)
            return render(request,''index.html')
    
    主要就是其中的user = authenticate(username=username,password=pwd)
    两个参数都是拿到前端用户输入的信息
    
    
    
  • 相关阅读:
    CCPlatformConfig(设置执行平台 iOS android win32等。。。)
    LeetCode Add Binary |My Solution
    actor中!(tell)与forward的差别
    二叉查找树(二叉排序树)创建,插入,删除操作。
    程序猿技术练级攻略
    poj 2236 Wireless Network 【并查集】
    leetcode 题解 || Letter Combinations of a Phone Number 问题
    创业之前 ——Paul Graham 最新博文
    linux-文件系统基本概念
    上拉电阻和下拉电阻的用处和区别
  • 原文地址:https://www.cnblogs.com/ludundun/p/12651412.html
Copyright © 2020-2023  润新知