标签:一个 mode 提交 设计 获取 文件 get def 匿名
django自带的用户认证模块
主要功能,用户信息管理,用户注册, 登录.注销,修改密码信息等,默认使用自定义的auth_user存储用户信息,用auth_session保存用户登录状态.
更改默认的auth_user表,完成自定一字段
利用一对一关联一张表
class UserDetail(models.Model):
phone = models.BigIntegerField()
user = models.OneToOneField(to='User')
使用继承关系
从导入d.c.a.m导入au
提前要去settings配置文件中添加配置信息,
AUTH_USER_MODEL = "app名.表名"
AUTH_USER_MODEL = "app01.UserInfo"
from django.contrib .auth .models import AbstractUser
class UserInfo(AbstractUser):
phone = models.BigIntegerField()
gender = models.CharField(max_length=32)
一旦提交了新的表设计,后续对表的操作就要使用我们自己新建的表名,而原来自动创建的auth-user表就已经不存在了.
如果使用默认表,需要提前导入表
from django.contrib.auth.models import User
#导入自己自定义创建的表
from app01.models import UserInfo
def register(request):
if request.method =="POST":
username = request.POST.get("username")
password = request.POST.get("password")
#以明文存储密码
UserInfo.objects.create(username=username,password=password)
#创建普通用户,密码自动加密
UserInfo.objects.create_user(username=username,password=password)
#创建超级用户,需要写入至少用户名,密码,邮箱
UserInfo.objects.create_superuser(username=username,password=password)
from django.contrib import auth
def check_user(request):
if request.method =="POST":
username = request.POST.get("username")
password = request.POST.get("password")
user_obj = auth.authenticate(request,username=username,password=password)
auth.authenticate()方法,返回user对象,括号中必须传入用户名和密码,
会自动加密密码并去数据库中比对.
user_obj.password返回的是密码的密文.
将用户的登陆状态保存到auth_session中
res = auth.authenticate(request,username=username,password=password)
auth.login(request,res)
auth.login(request,res)执行之后,就可以在任何可以拿到request的地方,通过request.user获取当前登录的用户对象,
如果没有登录,调用request.user返回一个AnonymousUser对象,表示匿名用户.
request.user.is_authenticated()
返回bool值
from dcad import lr
from django.contrib.auth.decorators import login_required
#局部配置
@login_required(login_url='/login/')
def index(request):
pass
#全局配置
#settings配置文件中 直接配置
LOGIN_URL = '/login/'
@login_required
def index(request):
pass
如果全局和局部都配置了,优先以局部为准
res = request.user.check_password(password)
返回bool值
request.user.set_password(new_password)
request.user.save()
切记保存语句一定要执行
auth.logout(request)
标签:一个 mode 提交 设计 获取 文件 get def 匿名
原文地址:https://www.cnblogs.com/agsol/p/11992078.html