zoukankan      html  css  js  c++  java
  • python之路_django 认证系统

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

    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
  • 相关阅读:
    如何对抗信息茧房?
    术语
    2021.07.17软件更新公告
    【C#】C#中使用GDAL3(二):Windows下读写Shape文件及超详细解决中文乱码问题
    【C#】C#中使用GDAL3(一):Windows下超详细编译C#版GDAL3.3.0(VS2015+.NET 4+32位/64位)
    k8s使用私有镜像仓库
    四、Abp vNext 基础篇丨领域构建
    Abp vNext 番外篇-疑难杂症丨认证授权
    三、Abp vNext 基础篇丨分层架构
    知识全聚集 .Net Core 目录篇
  • 原文地址:https://www.cnblogs.com/Ebola-/p/8734147.html
Copyright © 2011-2022 走看看