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)
- 一些直接使用的函数:add_message/get_message
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 %}
- message 函数,Django后端渲染模板时,调用该函数得到相关的消息,模板内可使用
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的存储。
设计
- 接口简单
- 扩展容易