本文主要是介绍Django(十一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Django(十一)
csrf相关装饰器
# 在后端视图层可以加装饰器实现开启,关闭csrf校验
from django.views.decorators.csrf import csrf_exempt,csrf_protect
"""
csrf_exempt
忽略csrf校验
csrf_protect
开启csrf校验
"""
# 针对FBV
@csrf_protect\@csrf_exempt
def login(request):
return render(request,'login.html')
# 针对CBV
csrf_protect 三种CBV添加装饰器的方式都可以
csrf_exempt 只有一种方式可以生效(给重写的dispatch方法装)
基于中间件思想编写项目
# 通过字符串形式导入模块
importlib模块
eg:
import importlib
res = 'test'
ret = importlib.import_module(res)
print(ret)
'''导入的最小单位是py文件'''
'''以发送提示信息为需求 编写功能'''
方式1:封装成函数
方式2:封装成配置
import settings
import importlib
# 1.获取配置信息
for i in settings.MODEL_URLS:
# 2.地址拆分
model_path,class_name = i.rsplit('.')
# 3.导入模块
res = importlib.import_module(model_path)
# 4.利用反射获取类
class_name_str = getattr(res,class_name)
# 5.实例化对象
obj = class_name_str()
# 6.调用函数
obj.send(f'{class_name}:你好啊')
auth认证模块
# django提供给你快速完成用户相关功能的模块
用户相关功能:创建、认证、编辑...
# django也配套提供了一张'用户表'
执行数据库迁移命令之后默认产生的auth_user
# django自带的admin后台管理用户登录参考的就是auth_user表
创建admin后台管理员用户:run manage.py task>>:createsuperuser
自动对用户密码进行加密处理并保存
auth模块方法大全
from django.contrib import auth
# 1.验证用户名和密码是否正确
auth.authenticate()
'''校验正确返回用户对象,错误返回None'''
# 2.保存用户登录状态
auth.login()
'''自动记录session'''
# 3.获取当前用户对象
request.user
'''
如果有用户登录返回用户对象
没有登录返回AnonymousUser
'''
# 4.判断当前用户是否登录
request.user.is_authenticated()
'''登录返回Ture,没登录返回False'''
# 5.校验登录装饰器
from django.contrib.auth.decorators import login_required
'''没有用户登录默认跳转到/accounts/login/页面,也可以自己定义'''
# 局部配置
@login_required(login_url='/login/')
# 全局配置
@login_required
LOGIN_URL = '/login/' # 需要在配置文件中添加配置
# 6.修改密码
request.user.check_password() # 比较原密码是否正确,自动加密再比较
request.user.set_password() # 修改密码
request.user.save() # 保存数据
# 7.注销登录
auth.logout(request) # session失效
# 8.注册用户
from django.contrib.auth.models import User
User.objects.create_superuser() # 注册超级管理员
User.objects.create_user() # 注册普通用户
auth扩展表字段
# 方式1:编写一对一表关系(了解)
# 方式2:类继承(推荐)
from django.contrib.auth.models import AbstractUser
class Users(AbstractUser):
# 编写AbstractUser类中没有的字段 不能冲突!!!
phone = models.BigIntegerField()
addr = models.CharField(max_length=32)
AUTH_USER_MODEL = 'app01.Users'
"""
1.类继承之后 需要重新执行数据库迁移命令 并且库里面是第一次操作才可以
2.auth模块所有的方法都可以直接在自定义模型类上面使用
自动切换参照表
"""
这篇关于Django(十一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!