Django Message module introduce

Django Message 是什么?

  • Django 内部一个基于Cookie和Session的消息框架,实现基于中间件。
  • 主要用于显示一个使用后即销毁的通知消息给用户。

使用

  • settings
    • installed_app
    • middleware
    • tempalte

由哪些组成?

  • api

    • 一些直接使用的函数:add_message/get_message
      add_message(request, messages.INFO, 'Hello world.')
    • 包装 add_message 的函数,debug,info,success,waring,error。类似于日志级别
      info(request, 'Hello world.')
    • set_level / get_level 设置消息的级别
      set_level(request, messages.DEBUG)
      get_level(request)
  • constant

    • debug,info,success,waring,error
  • 中间件

    • 请求处理:reqeust 对象添加_messages 属性(storage对象)
    • 响应处理:存储消息(写cookie,写session等)
  • context_processor 上下文处理器

    • message 函数,Django后端渲染模板时,调用该函数得到相关的消息,模板内可使用
      1
      {% if messages %}
      <ul class="messages">
          {% for message in messages %}
          <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
          {% endfor %}
      </ul>
      {% endif %}
  • view

    • FormView 的 mixin 类
  • Storage

    • Message class:消息实体,提供消息相关的函数
    • BaseStorage

      • add:往消息队列写入level低于默认level的消息,
      • update:调用_store方法,将消息存储到对应的backend
      • _store
      • _get:模板渲染时被调用,获取消息实体
    • CookieStorage:继承,实现_store/ _get,

    • SessionStorage:继承,实现 _store/_get
    • FallbackStorage:Django setting 默认,同时使用cookie和session的存储。
  • 设计

    • 接口简单
    • 扩展容易
请我喝杯咖啡吧~