Skip to main content

Django 的通知系统

项目描述

文件状态 https://badge.fury.io/py/django-notify-x.svg https://travis-ci.org/v1k45/django-notify-x.svg

Django NotifyX 是一个可重用的应用程序,它将通知系统功能添加到您的 Django 应用程序中。

它的灵感来自django-notifications,主要区别包括:
  • 一次多用户通知。

  • 通知更新的不同方法。

  • 尝试根据通知类型以不同方式格式化通知时,麻烦更少。

  • AJAX 支持一切。

  • 还有很多。

这只是让事情尽快工作的快速指南。深入了解细节..阅读文档

如何安装

下载包

可能最好的安装方法是使用PIP

$ pip install django-notify-x

如果您想保持在应用程序的最前沿:

$ git clone https://github.com/v1k45/django-notify-x.git
$ cd django-notify-x
$ python setup.py install

在你的项目上安装它

在你的 python 环境中安装django-notify-x之后。您必须在项目settings.py文件中输入相同的条目:

INSTALLED_APPS = (
    ...
    'your.other.apps',
    ...
    'notify',
)

然后是urls.py文件中的一个条目:

urlpatterns = (
    url(r'^notifications/', include('notify.urls', 'notifications')),
)

然后运行迁移:

$ python manage.py migrate notify

然后collectstatic以确保您已经复制了用于 AJAX 功能的 JS 文件:

$ python manage.py collectstatic

你已经成功安装了django-notify-x

发送通知

向单个用户发送通知:

from notify.signals import notify

# your example view
def follow_user(request, user):
    user = User.objects.get(username=user)
    ...
    dofollow
    ...

    notify.send(request.user, recipient=user, actor=request.user
                verb='followed you.', nf_type='followed_by_one_user')

    return YourResponse

像馅饼一样容易,不是吗?

向多个用户发送通知:

from notify.signals import notify

# your example view
def upload_video(request):
    ...
    uploadvideo...
    ...
    video = VideoUploader.getupload()
    followers = list(request.user.followers())

    notify.send(request.user, recipient_list=followers, actor=request.user
                verb='uploaded.', target=video, nf_type='video_upload_from_following')

    return YourResponse

只需将收件人更改为收件人列表并将通知发送给您想要的任意数量的用户!

通知连接支持

通知串联是您在阅读Bob 等通知时看到的内容,其他 64 人喜欢您的状态。它提供了开发支持,但目前仅支持 Python3。

如果您使用 Python3,则可以将此功能添加到您的应用程序中。请阅读nf_concat_support分支上的说明。

通知模板标签

这个应用程序带有两个通知标签,一个为您呈现通知,另一个包含与notifyX.js文件相关的 JavaScript 变量和函数。

渲染通知

正如其名称所反映的,它将为您呈现通知。render_notifications至少需要一个参数,最多两个参数。

您可以使用它们来使用Notification QuerySet 对象呈现通知,如下所示:

{% load notification_tags %}
{% render_notifications using request.user.notifications.active %}

默认情况下,上述标签将在通知页面而不是通知框上呈现通知。因此它将使用与其nf_type相对应的模板,并带有.htm后缀。

要在通知框上呈现通知:

{% load notification_tags %}
{% render_notifications using request.user.notifications.active for box %}

此标签在呈现通知内容时会查找带有_box.html后缀的模板名称。

request.user.notifications.active仅用于显示通知查询集的示例,您可以使用任何其他方式提供您选择的查询集。

include_notify_js_variables

这个标签使用notifications/includes/js_variables.html来包含一个用JS 变量和函数填充的模板。您可以通过创建自己的js_variables.html模板版本来覆盖任何 JS 变量的值。

要包含用于 AJAX 通知支持的 JS 变量,请执行以下操作:

{% load notification_tags %}
{% include_notify_js_variables %}

此模板包含包括模板包含目录中的三个 javascript 文件,它们是:

mark_success.js
mark_all_success.js
delete_success.js
update_success.js

所有这些都只是 javascript 函数声明,它们应该在 JQuery AJAX 请求成功完成时运行。

用户通知

user_notifications标签是 render_notifications 标签的快捷方式。它直接在指定目标上呈现登录用户的通知。

你可以像这样使用这个标签:

{% load notification_tags %}
{% user_notifications %}

此标签通过使用类似request.user.notifications.active()的方式呈现用户的活动通知。

就像render_notifications一样,它也将渲染目标作为可选参数。您可以像这样指定渲染目标:

{% load notification_tags %}
{% user_notifications for box %}

默认情况下,它将使用'page'作为渲染目标,并使用与模板的nf_type对应的整页通知渲染模板。

和其他东西…

最好阅读文档,而不是期望快速指南中的所有内容:)

待办事项列表

  • 添加通知连接支持。
    • 通知连接是当您阅读像Bob 和其他 18 个人在您的博文上发表评论这样的通知时 facebook 所做的。

    • 这将需要非匿名活动流字段。

    • 我要么删除匿名通知支持,要么找到另一种方法来实现此功能。

    • 工作正在进行中!

  • 基于函数的视图转换为基于类的视图

项目详情


下载文件

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

源分布

django-notify-x2-0.9.1.tar.gz (36.5 kB 查看哈希)

已上传 source