zoukankan      html  css  js  c++  java
  • auth模块---笔记

    1.auth模块的登录验证:

    ①只要登录的页面有用户名和密码就可以使用django提供的User表中的验证系统进行验证,可以把用户的账号和密码存到User对象表中,然后拿出来进行验证

    1.from django.contrib import auth
    
    2.def login(request):
        if request.method == "POST":
            username = request.POST.get("username")
            pwd = request.POST.get("password")
            # 如何判断用户名和密码对不对
            user = auth.authenticate(username=username, password=pwd)   #第一个是User表中的字段名                                                    #称,第二个是传进来参数名称
            if user:
                # 将登录的用户封装到request.user
                auth.login(request, user)
                return redirect("/index/")
        return render(request, "login.html")
    
    3.def index(request):
         # 取出封装到request.user中的用户名信息,返回浏览器中user是字符串,而请求来时候中间件会把user从数
         #据库中取出来,转为一个对象
        print(request.user.username)
        print("=" * 120)
        return render(request, "index.html")
    

    如下图所示为源码

    image-20200622092433333

    4.def logout(request):         # 清楚request.user中信息
        auth.logout(request)
        return redirect("/login/")
    
    5.from django.contrib.auth.decorators import login_required
    
    @login_required            # 如果没有登录,默认跳转到那个URL,在setting中配置
                                #LOGIN_URL = "/login/",否则执行index函数体中代码
    def index(request):
        print(request.user.username)
        print("=" * 120)
        ret = request.user.is_authenticated()
        print(ret)
        return render(request, "index.html")
    

    2.User对象:

    1.ret = user.is_authenticated()     # 判断是否验证过了
    
    2.def register(request):
        from django.contrib.auth.models import User
        User.objects.create(username="alex", password="alexdsb")  #这个写法错误,以明文存入表,但是                                        #登录时候要进行转换,因此匹配不上密码
    3.user_obj = User.objects.create_user(username="alex5", password="alexdsb")
        # 校验密码是否正确
        ret = user_obj.check_password("alex1234")
    4.   user_obj.set_password("alex3714")     #修改密码
        user_obj.save()
    

    3.如何扩展自带的auth_user表:

    1.from django.contrib.auth.models import User
    
    class UserDetail(models.Model):
        phone = models.CharField(max_length=11)
        user = models.OneToOneField(to=User)
        
    2.from django.contrib.auth.models import User, AbstractUser
    
    class UserInfo(AbstractUser):
        phone = models.CharField(max_length=11)
        addr = models.CharField(max_length=128)
    
  • 相关阅读:
    String类的常用方法(P小写)
    二维数组:判断是否有目标数
    java实现输入年份判断在哪一天(正则表达式待改进)
    Java实现八进制正整数转化为十进制数
    时钟和定时器
    电路的频率响应---带宽的定义
    stm32两轮平衡车资料
    二阶常系数齐次线性微分方程的解法
    同步积分
    陀螺仪信号解调
  • 原文地址:https://www.cnblogs.com/zhuxianxiaofan/p/13175646.html
Copyright © 2011-2022 走看看