##Django中间件看完这篇彻底明白( 三 )
检查是否需要添加/ , 主要是根据settings中APPEND_SLASH配置ifself.should_redirect_with_slash(request): path=self.get_full_path_with_slash(request) else: path=request.get_full_path()
在process_response函数中 , 会判断是否需要把404的请求重新定向到我们需要的页面django.middleware.csrf.CsrfViewMiddleware 这个很明显就是我们Django框架的csrf验证了 , 主要是process_view中的处理 , 从函数处理我们可以看到以下几点:
request请求中包含csrf_processing_done属性 , 则不进行csrf验证
视图函数中包含csrf_exempt属性 , 则不进行csrf验证
如果是GET、HEAD、OPTIONS、TRACE请求 , 则不进行csrf验证
request请求中包含_dont_enforce_csrf_checks属性 , 则不进行csrf验证
https请求头中如果不包含HTTP_REFERER , 则拒绝访问
请求头中不包含CSRF_COOKIE , 则拒绝访问
POST请求中携带csrfmiddlewaretoken参数 , 如果验证通过就可以访问
PUT/DELETE请求头中携带CSRF_HEADER_NAME配置 , 如果验证通过就可以访问
django.contrib.auth.middleware.AuthenticationMiddleware这个中间件中为我们的request对象添加了user属性 , 主要是获取session中SESSION_KEY值(settings配置中) , 从用户表中查询对应主键 , 得到用户对象 , 将其付给request.user
django.contrib.messages.middleware.MessageMiddlewareDjango的消息框架 , 主要是向目标中推送消息内容 , 在前端可通过以下方式使用{%ifmessages%}
{%formessageinmessages%}
{%ifmesage.level==DEFAULT_MESSAGE_LEVELS.ERROR%}Important:{%endif%} {{message}}
{%endfor%}
{%endif%}
推荐阅读
- 「」哪家18W PD快充方案最受欢迎?看完这个报告秒懂
- 「」什么是基础架构即代码和平台即代码?看完就清楚了
- 5G:iPhone SE2 已开放预购,是否值得入手看完您看就明白
- []为什么有的人必须买苹果手机?三大原因看完就懂
- 『』传说中的iphoe se2终于发布,看完给你点要不要买的建议
- []笔记本处理器和独显谁更强?看完2张表你就懂了!
- 电脑爱好者@笔记本处理器和独显谁更强?看完2张表你就懂了!
- #来Get#为什么有的人必须买苹果手机?三大原因看完就懂
- 『Linux就该这么学』Linux PC System76推出Linux键盘 看完手痒了!
- 『数码俊说』一万元的神舟游戏本很贵吗?先看完它配置再说