auth模块和importlib模块
auth模块
该模块主要是用来做用户相关的功能,例如:注册、登录、验证、修改密码、注销
访问admin需要管理员账号,该账号数据均来源于数据库迁移之后生成的auth_user表
创建admin管理员账号:createsuperuser
具体操作
from django.contrib import auth
# 校验用户名密码是否正确
auth.authenticate(request,username=username,password=password)
# 保存用户状态
auth.login(request,user_obj)
# 查看用户是否登录
request.user.is_authenticated()
# 获取用户对象
request.user
# 判断用户是否为超级用户
request.user.is_superuser
# 校验原密码是否正确
request.user.check_password()
# 修改密码
request.user.set_password()
request.user.save()
# 校验是否登录装饰器
from django.contrib.auth.decorators import login_required
"""
跳转全局配置
LOGIN_URL = '/lg/' # 配置文件中写上
@login_required
跳转局部配置
@login_required(login_url='/lg/')
"""
# 用户注册
from django.contrib.auth.models import User
# 在操作auth_user写入数据不能使用create方法,该方法并不会加密密码
# 创建普通用户
User.objects.create_user(username=username,password=password,email=email)
# 创建超级用户(一般创建超级用户并不在代码中创建)
User.objects.create_superuser(username=username, password=password, email=email)
# 用户注销
auth.logout(request)
auth模块用户表扩展字段
在auth_user表的基础上还想增加额外字段,并且还可以使用auth模块所有的功能
# 配合文件配置,告诉Django使用我们自己定义的表来取代auth_user表
AUTH_USER_MODEL = 'app01.Userinfo' # 应用名.表名
# 一对一表关联,面向对象继承
form django.contrib.auth.models import AbstractUser
class Userinfo(AbstractUser):
# 自己扩展原表内没有的字段
phone = models.BigIntegerField()
info = models.CharField(max_length=255)
importlib模块
用字符串的形式导入模块(Django的中间件使用的)
from b import c
print(c) # <module 'b.c' from 'D:\\day54_1\\b\\c.py'>
import importlib
res = 'b.c'
ret = importlib.ipmort_module(res)
print(ret) # <module 'b.c' from 'D:\\day54_1\\b\\c.py'>

浙公网安备 33010602011771号