若是你想用auth模块 那么你就用全套数据库
createsuperuser 建立超级用户 这个超级用户就能够拥有登录django admin后台管理的权限django
Auth模块是Django自带的用户认证模块:session
咱们在开发一个网站的时候,无可避免的须要设计实现网站的用户系统。此时咱们须要实现包括用户注册、用户登陆、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。app
Django做为一个完美主义者的终极框架,固然也会想到用户的这些痛点。它内置了强大的用户认证系统--auth,它默认使用 auth_user 表来存储用户数据。框架
跟用户相关的功能模块
用户的注册 登录 验证 修改密码 ...
执行数据库迁移命令以后 会生成不少表 其中的auth_user是一张用户相关的表格
添加数据
createsuperuser 建立超级用户 这个超级用户就能够拥有登录django admin后台管理的权限
from django.contrib import auth
from django.contrib import auth user_obj = auth.authenticate(username=username,password=password # 必需要用 由于数据库中的密码字段是密文的 而你获取的用户输入的是明文
auth.login(request,user_obj) # 将用户状态记录到session中
print(request.user.is_authenticated) # 判断用户是否登陆 若是是大家用户会返回False
print(request.user) # 若是没有执行auth.login那么拿到的是匿名用户
from django.contrib.auth.decorators import login_required @login_required(login_url='/xxx/') # 局部配置 def index(request) pass # 全局配置 settings文件中 LOGIN_URL = '/xxx/'
request.user.check_password(old_password)
request.user.set_password(new_password) request.user.save() # 修改密码的时候 必定要save保存 不然没法生效
auth.logout(request) # request.session.flush()
User.objects.create(username =username,password=password) # 建立用户名的时候 千万不要再使用create 了 User.objects.create_user(username =username,password=password) # 建立普通用户 User.objects.create_superuser(username =username,password=password,email='123@qq.com') # 建立超级用户 邮箱必填
第一种 :使用一对一关系 不考虑网站
第二种: 使用类的继承ui
必定要在配置文件中 告诉djangourl
告诉django orm再也不使用auth默认的表 而是使用你自定义的表spa
在setting.py文件中配置设计
AUTH_USER_MODEL = 'app01.Userinfo' # '应用名.类名'
使用类继承
from django.contrib.auth.models import AbstractUser
class Userinfo(AbstractUser): # 千万不要跟原来表中的字段重复 只能创新 phone = models.BigIntegerField() avatar = models.CharField(max_length=32)
最后执行数据库迁移命令
全部的auth模块功能 所有都基于你建立的表,而再也不使用auth_user