zoukankan      html  css  js  c++  java
  • Python Day77 auth and User

      在介绍此章节的内容时,我们需要引用到如下两个模块:

    from django.contrib.auth.models import User
    from django.contrib import auth

    一、User表介绍  

      其中User为django框架为我们提供用于存储登录用户和密码等信息的用户表,在我们使用此django认证系统时,必须使用此表,不可以另外创建用户表,且表中的内容不可以直接在表中添加,因为其存储密码为加密的的字符串。其中username和password字段是必须存入内容的字段。User表格添加数据两种方式如下:

    1、方式一:

      通过如下命令添加超级用户信息:python manage.py createsuperuser,然后按照步骤设置用户信息,其中username和password字段是必须存入内容的字段。

    2、方式二:

      通过create_user()或者create_superuser()(与上述创建超级用户效果一样)方法添加用户信息,如下注册用户函数的应用实例:

    复制代码
    def register(request):
        if request.method=="POST":
            username=request.POST.get("username")
            userpswd1=request.POST.get("userpswd1")
            userpswd2=request.POST.get("userpswd2")
            if userpswd1==userpswd2:
                User.objects.create_user(username=username,password=userpswd1)      #username和password为User表的关键字段
                return redirect("/login/")
    复制代码

    二、author模块方法

    1、authenticate()

      提供了用户认证,即验证用户名以及密码是否正确,一般需要username  password两个关键字参数,如果认证信息有效,会返回一个  user  对象。具体使用见如下登录函数实例:

    复制代码
    def login(request):
        if request.method=="POST":
            username=request.POST.get("username")
            userpswd=request.POST.get("userpswd")
            user=auth.authenticate(username=username,password=userpswd)
            if user:
                auth.login(request,user)                                # 相当于request.session["user"]=user.username
                return redirect("/booklist/")
        return render(request,"login.html")
    复制代码

    2、login(HttpRequest, user)

      该函数接受一个HttpRequest对象,以及一个认证了的user对象,此函数使用django的session框架给某个已认证的用户附加上session id等信息。即上述登录实例中设置session用法。

    3、logout(request) 

      该函数接受一个HttpRequest对象,无返回值。当调用该函数时,当前请求的session信息会全部清除。该用户即使没有登录,使用该函数也不会报错。如下注销当前登录用户的session实例:

    def login_out(request):
        auth.logout(request)                                          # 清除当前登录用户的session,相当于request.session.flush()
        return redirect("/login/")

    三、user对象方法

    1、is_authenticated()

      返回值为bool值,主要用于判断user对象是否完成登录验证,如用在要求用户登录以后才能访问某些网址,否则跳转到登录页面完成登录。见如下页面函数访问前的验证实例:

    def booklist(request):
        user=request.user                                                      #显示当前登录用户对象
        if not user.is_authenticated():
            return redirect("/login/")
        book_obj=Book.objects.all()
        return render(request,"booklist.html",{"book_obj":book_obj})

    2、set_password()

      使用 set_password() 来修改密码,见如下修改密码函数实例:

    复制代码
    def modify(request):
        if request.method=="POST":
            username=request.POST.get("username")
            pre_userpswd=request.POST.get("pre_userpswd")
            new_userpswd=request.POST.get("new_userpswd")
            user=auth.authenticate(username=username,password=pre_userpswd)
            if user:
                user.set_password(new_userpswd)
                user.save()
                return redirect("/login/")
    复制代码

    四、django常用命令

      在django框架中常用的命令总结如下,注以下命令是在终端执行:

    复制代码
    # 查看django版本
    python -m django --version
    
    # 创建项目,名为mysite
    django-admin startproject mysite
    
    # Django项目环境终端
    python manage.py shell
    
    # 创建应用程序,确保和 manage.py 是同一目录
    python manage.py startapp app01
    
    # 启动django
    python manage.py runserver
    python manage.py runserver 8080
    python manage.py runserver 0.0.0.0:8000
    
    # 数据库迁移
    python manage.py makemigrations
    
    python manage.py migrate
    
    # 同步数据库
    python manage.py syncdb
    
    # 清空数据库(保留空表)
    python manage.py flush
    
    # 认证User表创建超级用户
    python manage.py createsuperuser
    
    # 修改用户密码
    python manage.py changepassword username
  • 相关阅读:
    LeetCode Best Time to Buy and Sell Stock
    LeetCode Scramble String
    LeetCode Search in Rotated Sorted Array II
    LeetCode Gas Station
    LeetCode Insertion Sort List
    LeetCode Maximal Rectangle
    Oracle procedure
    浏览器下载代码
    Shell check IP
    KVM- 存储池配置
  • 原文地址:https://www.cnblogs.com/liuduo/p/8039576.html
Copyright © 2011-2022 走看看