码迷,mamicode.com
首页 > 其他好文 > 详细

Django auth模块

时间:2019-08-06 00:43:42      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:migration   create   ati   word   导入   html   field   tab   name   

一、创建超级用户(auth_user)

技术图片

createsuperuser

进入交互界面

二、author模块

1、authenticate() 验证

判断 前端输入的用户和密码 是否 存在auth_user表中(可以看成ORM的filter语句并取第一个)

返回结果:是当前登录对象

user_obj = auth.authenticate(username=user, password=pwd)

2、login() 注入

将当前登录对象注入到request中,方便在其它函数调用该对象

注入:

auth.login(request, user_obj)

调用:

user_obj = request.user

注意:user是固定写法,获取当前登录的用户对象

   通过该对象获取值,需要通过auth_user中的字段

本质:利用session存储对象

3、logout()

作用:删除request中的注入对象 和request.session.flush() 相似

auth.logout(request)

4、is_authenticated

作用:判断是否验证通过

print(request.user.is_authenticated)

5、login_requierd()

login_required是装饰器

from django.contrib.auth.decorators import login_required

配置setting.py,设置没有登录默认跳转的url

# 没有登录,默认跳转该url
LOGIN_URL = url

6、create_user() 和 create_superuser()

作用:创建用户

导入模块

from django.contrib.auth.models import User

创建用户对象

User.objects.create_user(username="tom1", password="@WSX3edc")

7、check_password(密码)

作用:判断密码是否相等

    user_obj = User.objects.create_user(username="tom2", password="@WSX3edc")
    ret = user_obj.check_password("@WSX3edc")
    print(ret)

8、set_password(新密码)

作用:设置新密码

注意:别忘记save()

 user_obj.set_password("@WSX1234")
    user_obj.save()

登录的例子

views.py

from django.shortcuts import render, redirect
from django.contrib import auth
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
# Create your views here.


# 登录
def login(request):
    if request.method == "POST":
        user = request.POST.get("user")
        pwd = request.POST.get("pwd")
        user_obj = auth.authenticate(username=user, password=pwd)
        if user_obj:
            auth.login(request, user_obj)
            return redirect("/index/")
    return render(request, "login.html")


@login_required
# 登录后的页面
def index(request):
    user_obj = request.user
    print(user_obj.username)
    print(request.user.is_authenticated)
    return render(request, "index.html", {"user": user_obj})


# 注销Session,即用户
def logout(request):
    auth.logout(request)
    return redirect("/login/")


# 创建用户
def reg(request):
    user_obj = User.objects.create_user(username="tom3", password="@WSX31234")
    ret = user_obj.check_password("@WSX3edc")
    print(ret)
    user_obj.set_password("@WSX1234")
    user_obj.save()
    return redirect("/login/")

三、扩展auth_user的字段

这里使用继承

from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.


class User(AbstractUser):
    phone = models.CharField(max_length=11, default="11111111")
    addr = models.CharField(max_length=64, default="abc")

配置文件setting.py

# 继承auth_user的时候,需要设置
AUTH_USER_MODEL = app名.类名r

重新运行 makemigrations 和 migrate命令 生成数据表

若失败

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency app01.0001_initial on database ‘default‘

本人用的是暴力删除

求告知更好的方法

继承auth_user后,需要对注册进行修改

# 创建用户
def reg(request):
    user_obj = models.User.objects.create_user(username="tom3", password="@WSX31234")
    ret = user_obj.check_password("@WSX3edc")
    print(ret)
    user_obj.set_password("@WSX1234")
    user_obj.save()
    return redirect("/login/")

 

 

  

 

Django auth模块

标签:migration   create   ati   word   导入   html   field   tab   name   

原文地址:https://www.cnblogs.com/wt7018/p/11306457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!