提供临时通知的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导入) 是:

ConstantLevelDefault 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

自定义标记

为通知级别(内置级别或 自定义),将NOTIFICATIONS_TAGS设置设置为字典 包含要更改的级别。在扩展默认标记时, 您只需为要覆盖的级别提供标记:

import django_notify
NOTIFICATIONS_TAGS = {
    django_notify.INFO: 'info',
    50: 'critical',
}

为了更直接地控制消息标记,可以选择提供一个字符串 包含任何添加方法的额外标记:

request.notifications.add('Over 9000!', extra_tags='dragonball')
request.notifications.error('Email box full', extra_tags='email')

在该级别的任何默认标记(空格分隔)之前添加额外标记。

临时存储后端

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方法。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
具有泛型的对象的oop Java数组   爪哇丑陋的数字找到第1500名UVA在线评委   SpringJava。lang.IllegalStateException:自动连线批注至少需要一个参数   java为什么我的系统找不到我的属性文件?   java有没有办法让Maven同时构建1.5和1.6字节码JAR?   java通过Sailfin中的header进行操作   使用向量、距离和图形   如果提供的登录信息是错误的,为什么java控件不进入else部分和Toast?   java如何为电子商务安卓应用程序存储产品列表   java保存声音首选项Libgdx Android   java无法在测试单元中调用JpaRepository   java使用批处理更新Cassandra表中的选定列,而不将其他列值设为null   java如何在log4j2中的手动代码配置中向appender添加级别?   从ImageIO返回的java Null。读取(新的ByteArrayInputStream(bs));   java不确定如何防止此Arraylist处于可编辑状态   netbeans中的java更改清单(TrustedLibrary=true属性)   java无法使用RestTemplate和Spring数据REST发布具有关系的新实体