提供临时通知的django应用程序。
django-notif的Python项目详细描述
提供临时通知的django应用程序。
通知消息将一直保存到请求检索它们为止。
安装
将中间件添加到MIDDLEWARE_CLASSES设置(默认 临时存储依赖于django的contrib.sessions应用程序,因此 这个在SessionMiddleware)之后:
'django_notify.middleware.NotificationsMiddleware',
为了方便在模板中访问通知,请添加上下文处理器 进入您的TEMPLATE_CONTEXT_PROCESSORS设置:
'django_notify.context_processors.notifications',
用法
添加通知消息
中间件附加一个名为 notifications到您的request。要添加通知,请致电:
request.notifications.add('Hello world.')
其他一些方法提供了一种标准的方法来添加通知 使用的标记(通常表示为消息的HTML类):
request.notifications.debug('%s SQL statements were executed.' % count) request.notifications.success('Profile details updated.') request.notifications.warning('Your account expires in three days.') request.notifications.error('Document deleted.')
显示通知消息
在模板中,使用如下内容:
{% if notifications %} <ul class="messages"> {% for message in notifications %} <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li> {% endfor %} </ul> {% endif %}
如果您使用的是上下文处理器,则应使用 RequestContext。否则,请确保request.notifications可用于 模板上下文。
通知消息过期
当存储实例为 迭代(并在处理响应时清除)。
为了避免清除通知,可以设置 ^迭代后{tt9}$。
通知级别
NOTIFICATIONS_LEVEL设置可用于更改记录的最小值 水平。将忽略添加低于此级别的通知的尝试。
内置级别(可以直接从django_notify导入) 是:
Constant | Level | Default Tag |
---|---|---|
^{tt12}$ | 10 | ^{tt13}$ |
^{tt14}$ | 20 | |
^{tt15}$ | 25 | ^{tt16}$ |
^{tt17}$ | 30 | ^{tt18}$ |
^{tt19}$ | 40 | ^{tt20}$ |
INFO是默认的最低记录级别。它也是 add方法的默认级别。
还可以通过更改 level通知存储实例的属性:
import django_notify # Change the notifications level to ensure the debug message is added. request.notifications.level = django_notify.DEBUG request.notifications.debug('Test notification...') # Set the notifications level back to default. request.notifications.level = None
临时存储后端
django notify可以使用不同的后端来存储临时消息。改变 正在使用哪个后端,将NOTIFICATIONS_STORAGE添加到您的设置中, 引用存储类的模块和类。例如:
NOTIFICATIONS_STORAGE = 'cookie.CookieStorage'
django notify首先查找django_notify.storage中的模块, 如果找不到,则尝试直接导入完整的给定模块。
django notify中包含三个临时存储类:
- 'session.SessionStorage'
- 此类存储请求会话中的所有消息。它 需要django的contrib.session应用程序。
- 'cookie.CookieStorage'
- 此类将通知数据存储在cookie中(用机密签名 散列以防止操作)在请求之间持久化通知。 如果Cookie数据大小超过4096字节,则删除旧消息。
- 'fallback.FallbackStorage'
这是默认的临时存储类。
此类对所有通知消息使用CookieStorage,返回 对单个无法容纳的消息使用sessionstorage 饼干。
因为它使用sessionstorage,所以还需要django的 contrib.session应用程序。
要编写自己的类,请在 django_notify.storage.base和写_get和_store方法。