Django笔记08

Django中间件

  中间件类似于django的门卫,数据在进入和离开时都需要经过中间件

  能做全局访问的频率限制,身份校验,黑名单,白名单等全局的限制

  用法:新建一个文件夹,文件夹中新建一个py文件

       写的类必须继承MiddlewareMixin

     from django.utils.deprecation import MiddlewareMixin

django允许用户自定义中间件,并且保留给用户五个可以自定义的方法
process_request(self,request) 请求来时执行,这时返回一个HttpResponse对象,后续的中间件都不会走,直接同级返回
process_response(self,request,response) 响应返回时执行
process_view(self,request,callback,callback_args,callback_kwargs) 路由匹配成功执行视图函数之前
process_exception(self,request,exception) 视图函数报错执行
process_template_response(self,request,response)

CSRF跨站请求伪造

  form表单中加上:{% csrf_token %}

  ajax使用csrf校验:data:{"csrfmiddlewaretoken":$("[name=csrfmiddlewaretoken]").val()}

  局部使用与局部禁用csrf

  导入 from django.views.decorators.csrf import csrf_exempt,csrf_protect

FBV
局部禁用 @csrf_exempt
def index(request):   pass
局部使用
@csrf_protect
def index(self):
  pass
CBV
from django.utils.decorators import method_decorator
form django.views.decorators.csrf import csrf_exempt,csrf_protect
@method_decorator(csrf_exempt,name="dispatch") 给类加上装饰器
@method_decorator(csrf_exempt)给dispathch函数加上装饰器

https://www.cnblogs.com/liuqingzheng/articles/9509739.html

https://www.cnblogs.com/Dominic-Ji/p/9229509.html?tdsourcetag=s_pctim_aiomsg

Auth认证模块

  auth_user 表默认创建

  创建用户不能手动在表中插入,密码是加密的

auth认证
  from django.contrib import auth
  user = auth.authenticate(request,username=username,password=password)
login(HttpRequest,user)
  该函数接受一个HttpRequest对象和一个经过认证的User对象
  该函数实现用户登录功能,本质上会在后端为该用户生成相关session数据
注销
  auth.logout(reuqest)
  等价于删除session数据request.session.flush()
装饰器校验是否登录及跳转
  from django.contrib.auth.decorators import login_required
  @login_required(跳转地址)
  def my_view(request):
    pass
  可以在配置文件中指定auth校验登录不合法统一跳转的路径
  LOGIN_UTL = '/login/' 既可以局部配置,也可以全局配置
创建用户
  from django.contrib.auth.models import User
  User.objects.createuser() 创建普通用户
  User.objects.creqtesuperuser() 创建超级用户
判断是否通过认证
  request.user.is_authenticated()
校验密码,修改密码
  request.user.check_password(password)检查密码是否正确
  request.user.set_password(password="xxx") 修改密码
  reuqest.user.save() 保存设置
User对象属性
  is_staff:用户是否拥有网站的管理权限
  is_active:是否允许用户登录,设置False,可以在不删除用户的前提下禁止用户登录
扩展默认auth_user表
  第一种:新建一张表与auth_user表一对一外键关联
  第二种:
    from django.contrib.auth.models import AbstractUser
    class UserInfo(AbstractUser):
      phone = models.CharField(max_length=32)
    在settings配置文件中指定使用UserInfo表
    AUTH_USER_MODEL = "app01.UserInfo"

https://www.cnblogs.com/liuqingzheng/articles/9628105.html

原文地址:https://www.cnblogs.com/LinChengcheng/p/10756958.html