Django中间件看完这篇彻底明白( 三 )

  1. request请求中包含csrf_processing_done属性,则不进行csrf验证
  2. 视图函数中包含csrf_exempt属性,则不进行csrf验证
  3. 如果是GET、HEAD、OPTIONS、TRACE请求,则不进行csrf验证
  4. request请求中包含_dont_enforce_csrf_checks属性,则不进行csrf验证
  5. https请求头中如果不包含HTTP_REFERER,则拒绝访问
  6. 请求头中不包含CSRF_COOKIE,则拒绝访问
  7. POST请求中携带csrfmiddlewaretoken参数,如果验证通过就可以访问
  8. PUT/DELETE请求头中携带CSRF_HEADER_NAME配置,如果验证通过就可以访问
  • django.contrib.auth.middleware.AuthenticationMiddleware这个中间件中为我们的request对象添加了user属性,主要是获取session中SESSION_KEY值(settings配置中),从用户表中查询对应主键,得到用户对象,将其付给request.user
  • django.contrib.messages.middleware.MessageMiddlewareDjango的消息框架,主要是向目标中推送消息内容,在前端可通过以下方式使用
{% if messages %}<ul class="messages">    {% for message in messages %}    <li{% if message.tags %} class="{{ message.tags }}" {% endif %}>        {% if mesage.level == DEFAULT_MESSAGE_LEVELS.ERROR %}Important: {% endif %}        {{ message }}    </li>    {% endfor %}</ul>{% endif %}
【Django中间件看完这篇彻底明白】


推荐阅读