Python Day77 auth and User

  在介绍此章节的内容时,咱们须要引用到以下两个模块:html

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

1、User表介绍  python

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

一、方式一:数据库

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

二、方式二:session

  经过create_user()或者create_superuser()(与上述建立超级用户效果同样)方法添加用户信息,以下注册用户函数的应用实例:app

复制代码
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/")
复制代码

2、author模块方法框架

一、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")
复制代码

二、login(HttpRequest, user)

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

三、logout(request) 

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

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

3、user对象方法

一、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})

二、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/")
复制代码

4、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
相关文章
相关标签/搜索