跳转到主要内容

Django应用,提供临时通知。

项目描述

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对模板上下文可用。

通知消息的过期

当遍历存储实例时,将标记通知以清除(并且在处理响应时清除)。

为了避免通知被清除,您可以在迭代后设置 request.notifications.used = False

通知级别

可以使用 NOTIFICATIONS_LEVEL 设置来更改最小记录级别。尝试添加低于此级别的通知将被忽略。

内置的级别(可以直接从 django_notify 导入)包括

常量

级别

默认标签

DEBUG

10

debug

INFO

20

SUCCESS

25

success

WARNING

30

warning

ERROR

40

error

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',
}

要更直接地控制消息标签,您可以选择为任何 add 方法提供一个包含额外标签的字符串

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 存储所有通知消息,对于无法适应单个 cookie 的消息,则回退到使用 SessionStorage。

由于它使用 SessionStorage,因此也需要 Django 的 contrib.session 应用程序。

要编写自己的,请在 django_notify.storage.base 中的 BaseStorage 类派生子类,并编写 _get_store 方法。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。

源分布

django-notify-1.1.2.tar.gz (12.7 kB 查看哈希)

上传时间

由以下支持