zoukankan      html  css  js  c++  java
  • Auth模块

    Auth

    创建超级用户

    命令行创建,邮箱可以跳过

    python manage.py createsuperuser
    

    auth模块的使用

    如果你想用auth就全部使用auth,最好避免混用
    from django.contrib import auth
    
    如何创建超级用户 用于登录django admin的后台管理
    createsuperuser
    
    #校验用户是否存在返回的是数据对象,没有返回None
    user_obj = auth.authenticate(username=username,password=password)
    
    #保存用户登录状态,执行完这一句之后 只要是能够拿到request的地方,会自动生成一个session
    auth.login(request,user_obj)  
    
    # 都可以通过request.user获取到当前登录用户对象,判断当前用户是否登录
    request.user.is_authenticated()
    
    #获取当前用户数据对象
    request.user
    
    #如何给视图函数加上校验用户是否登录的校验,装饰器直接不用自己写了,直接使用封装好的就行
    from django.contrib.auth.decorators import login_required
    #有两种配置的形式  
    # 当用户没有登录的情况下 跳转的url有两种配置方式
    1.在装饰器括号内通过login_url参数局部指定
    
    2.全局配置  用户没有登录的情况下 所有的视图统一跳转到一个url
    
    配置文件中settings
    LOGIN_URL = '/login/'
    
    @login_required(login_url='/xxx/')  # 局部配置
    
    @login_required  # 全局配置
    def home(request):
        return HttpResponse('home页面')
        
    校验原密码是否正确
    is_right = request.user.check_password(old_password)
    设置新密码
    request.user.set_password(new_password)
    request.user.save()
    
    
    用户注册
    from django.contrib.auth.models import User
    
    # 不用使用create 密码会直接存成明文
    User.objects.create(username=username,password=password)  
    
    # 创建普通用户
    User.objects.create_user(username=username,password=password)  
    
    # 创建超级用户,和命令行不同,这里邮箱字段必须填写
    User.objects.create_superuser(username=username,password=password,email='123@qq.com')  
    

    自定义auth_user表,实现拓展

    方法一-不推荐

    利用一对一关系,在创建一张表拓展字段

    方法二-继承

    1.首先自己写一个类,继承auth_user的类

    from django.db import models
    from django.contrib.auth.models import AbstractUser
    
    class Userinfo(AbstractUser):
    """
    强调,你继承了AbstractUser之后 你自定义的表中,字段不能跟原有的冲突
    """
    phone = models.BigIntegerField()
    avatar = models.FileField()
    register_time = models.DateField(auto_now_add=True)
    

    2.,然后在settings文件中配置,来代替默认的auth_user

    AUTH_USER_MODEL = 'app01.Userinfo'
    # 固定语法: AUTH_USER_MODEL = '应用名.表名'
    
    """
    通过上面的方式 继承的表 还可以继续使用auth模块所有的功能
    """
    

    温馨提示 当你需要些用户相关的功能的时候可以考虑使用auth模块

    admin查看编辑数据库

    在admin中编辑数据库,需要进行配置

    from django.contrib import admin
    from app01 import models
    # Register your models here.
    
    admin.site.register(models.UserInfo)
    
    
    能够对注册了的模型表 生成增删改查起码四个页面
    
    http://127.0.0.1:8000/admin/app01/userinfo/  查看用户
    http://127.0.0.1:8000/admin/app01/userinfo/1/change/  编辑用户
    http://127.0.0.1:8000/admin/app01/userinfo/add/  添加用户
    http://127.0.0.1:8000/admin/app01/userinfo/2/delete/  删除用户
    
  • 相关阅读:
    kubernetes_mk_lgg_
    kubernetes_tb宝满
    hcna
    kubernetes_book
    ipset和iptables配合来自动封闭和解封有问题的IP
    microk8s
    iptables
    docker kubernetes Swarm容器编排k8s CICD部署 麦兜
    scala Actor Akka
    数据库——mysql数据类型2
  • 原文地址:https://www.cnblogs.com/zx125/p/11992415.html
Copyright © 2011-2022 走看看