django的统一、持久和动态用户消息/通知
django-monitio的Python项目详细描述
用于django的monitio
====
monitio允许您有消息(也称为通知),这些消息:
*可以持久化(存储在数据库中,稍后读取),
*在添加时动态显示在web ui上,
*并且可以选择通过电子邮件发送给您的最终用户。
monitio基于:
*[django sse](https://github.com/niwibe/django sse)
*它使用[django redis](https://github.com/niwibe/django redis)
*…和[redis database](https://redis.io)
*[yaffle's eventsource.js](https://github.com/yaffle/eventsource)用于跨浏览器服务器发送事件的兼容性
*[django cors headers](https://github.com/ottoyiu/django-cors-headers)用于相同的事情
*[django transaction signals](https://github.com/davehughes/django transaction signals)
*[jquery](http://jquery.com/)和[jqueryui](http://jqueryui.com)
10、Opera 12、Ffox 16和Windows上的Safari 5.1.7。此外,使用nginx+gunicorn在
生产环境中对monitio进行了测试,发现其工作正常。
文档
----
django应用程序,用于统一、持久和实时的用户消息/通知,构建在django的[消息框架](http://docs.djangoproject.com/en/dev/ref/contrib/messages/)(`django.contrib.messages`)之上。
monitio是消息存储后端,它为那些被认为是持久的消息提供支持,也就是说,它们比浏览器会话更持久,并将存储在数据库中。这些消息可以按您的意愿显示给用户,您可以让用户将它们标记为已读,删除它们,甚至回复它们。对于其中一些操作,您可以在project url.py中导入视图。
*为经过身份验证的用户支持持久和非持久消息。持久消息存储在数据库中。
*对于匿名用户,使用基于cookie/会话的方法存储消息。不支持匿名用户的持久消息。
*有一个统一的api用于向两种类型的用户显示消息,也就是说,您可以使用与django的消息框架相同的代码来添加和显示消息,但是,如果用户经过身份验证,则还有其他功能可用。
克隆这个git存储库(这个fork没有pypi包)。主分支是最新的稳定分支:
$git clone git://github.com/mpasternak/django monitio.git
2。确保"monitio"在"pythonpath"中。
3.将"monitio"和"company"添加到"installed_apps"设置中。
installed_apps=(
…
"django_sse"、
"corsheaders"、
"monitio"、
)
4。确保django的"messagemiddleware"在"middleware_classes"设置中(默认情况下是这样),同时在那里启用"corsmidleware"。如果要使用翻译,请添加"localemidleware":
middleware嫒类=(
…
"django.contrib.messages.middleware.MessageMiddleware"、
"corsheaders.middleware.corsmidleware"、
"django.middleware.locale.localemidleware",
…
)
5.为消息和静态URL添加上下文处理器:
context\u processors=(
…
'django.contrib.messages.context\u processors.messages',
'django.core.context\u processors.static',
…
)
6。将"monitio"url添加到url conf中。例如,为了使"http://domain.com/messages/"下的消息可用,请添加以下内容行到"urls.py"。
(r'^messages/',include('monitio.urls',namespace='monitio'),
…
)
7。在您的设置中,将消息[存储后端](http://docs.djangoproject.com/en/dev/ref/contrib/messages/消息存储后端)设置为"monitio.storage.persistentmessagestorage":
消息存储="monitio.storage.persistentmessagestorage"
8。在您的设置中,添加一个合理的默认值,它将阻止向用户显示已读消息:
>9。设置'django sse'和'corsheaders':
'location':'127.0.0.1:6379',
'db':0,
}
cors\u origin\u whitelist=(
'127.0.0.1',
'127.0.0.1:8000',
)
10。使用
11设置数据库表。如果要使用捆绑的模板,请将"templates"目录添加到"template\u dirs"设置中:
template\u dirs=(
…
"path/to/monitio/templates")
12。为[nginx]设置一个生产服务器(http://nginx.org/)+[gunicorn](http://gunicorn.org),请使用以下配置:
location~^/messages{
proxy\u pass http://your gunicorn address…/
proxy\u buffering off;
proxy\u cache off;
proxy\u set\u header host$host;
proxy_set_header connection';
proxy_http_version 1.1;
chunked_transfer_encoding off;
}
,对于[gunicorn](http://gunicorn.org),确保安装了[gevent](http://www.gevent.org/)并使用参数"-k"运行[gunicorn](http://gunicorn.org)gevent`
目的如成功消息、警告等。
import monitio
持久消息级别:
monitio.info
monitio.success
monitio.warning
monitio.error
不同的是,具有这些级别的消息将是持久的:
这很重要。如果使用"monitio"常量,则消息将存储在数据库中并一直保存到有人显式删除它为止。如果使用"contrib.messages"常量,则获得与使用非持久性存储相同的行为,消息存储在数据库中,以确保接收,但在被访问后立即将其删除。
\[消息框架](http://docs.djangoproject.com/en/dev/ref/contrib/messages/),您仍然可以使用常规django api添加消息:
from django.contrib import messages
messages.add_message(request,messages.info,"hello world.")
这与使用"monitio"提供的api兼容,相当于从django.contrib import messages
import monitio
"hello world.")
nitio table until remove.')
或等效:
请注意,这仅适用于已登录的用户,因此,您可能需要使用"request.user.is_authenticated()"来确保当前用户不是匿名的。为匿名用户添加持久性消息会引发"notimplementederror"。
这是contrib消息中"add_message"的原型:
这是持久消息中"add_message"的原型。
def add_message(request,level,message,extra_tags='',fail_silented=false,subject='',user=none,email=false,from_user=none,expires=none,close_timeout=none):
您还可以设置是否要发送电子邮件通知。以下消息将作为消息存储在数据库中,并发送到与当前用户关联的电子邮件地址:
monitio.add_message(request,monitio.info,'message body',subject='please read me',email=true)
**注意!**目前的电子邮件通知太简单了,我不建议使用它们,我不建议使用它们。
用户sally下次登录时将看到此消息:
user=sally)
一旦消息过期,它将不会包含在返回的queryset中。目前没有从数据库中清除过期邮件的视图或方法。
`部分:
``
{%include"monitio/header.html"%}
```
这将包括"yaffle.js"、"monitio.js"monitio翻译和主题。
*在"body>;"部分中,将消息占位符放置在您喜欢的任何位置:
```
<;div id="monitiomessages">;<;div>;
```
*…准备初始化MuniTo,可选地传递主题参数:
`BR/> $(文档).Read(函数){BR/> $("MessagesPlaceholder")({ BR/> URL):"{%URL"MuniTIO:持久消息SSE"USER用户名%},
"主题":"基础"//移除对于"主题";"}";< < < > > >;不要忘记添加链接到"jQuery"、"选项"和"基础5",如有任何问题,请在"目录"中"检查",因为它比原始目录简单得多。
主题='',过期=无,关闭超时=无,SSE=真,
电子邮件=假):
uest.\u messages`设置为您在设置中配置的默认存储。持久性消息存储有一些Django内置存储没有的额外方法,这些方法可能非常有用:
***获取持久性消息**:获取已读和未读持久性消息
***获取持久性消息**:获取未读持久性消息
***获取非持久性消息**:获取非持久性消息消息
**count_unread**:统计持久和非持久未读消息
**count_persistent_unread**:统计持久未读消息
**count_nonpersistent**:统计非持久消息
未读邮件的数量收件箱{%if messages.count_persistent_unread>;0%}({{messages.count_persistent_unread}){%endif%}<;/a>;<;/ul>;
\django monitio is(c)2013[mpasternak](https://github.com/mpasternak)。
[philomat](https://github.com/philomat)是
[django persistent messages](https://github.com/philomat/django persistent messages)的原始代码的作者,然后由[maurojp](https://github.com/maurojp)分叉。
====
monitio允许您有消息(也称为通知),这些消息:
*可以持久化(存储在数据库中,稍后读取),
*在添加时动态显示在web ui上,
*并且可以选择通过电子邮件发送给您的最终用户。
monitio基于:
*[django sse](https://github.com/niwibe/django sse)
*它使用[django redis](https://github.com/niwibe/django redis)
*…和[redis database](https://redis.io)
*[yaffle's eventsource.js](https://github.com/yaffle/eventsource)用于跨浏览器服务器发送事件的兼容性
*[django cors headers](https://github.com/ottoyiu/django-cors-headers)用于相同的事情
*[django transaction signals](https://github.com/davehughes/django transaction signals)
*[jquery](http://jquery.com/)和[jqueryui](http://jqueryui.com)
10、Opera 12、Ffox 16和Windows上的Safari 5.1.7。此外,使用nginx+gunicorn在
生产环境中对monitio进行了测试,发现其工作正常。
文档
----
django应用程序,用于统一、持久和实时的用户消息/通知,构建在django的[消息框架](http://docs.djangoproject.com/en/dev/ref/contrib/messages/)(`django.contrib.messages`)之上。
monitio是消息存储后端,它为那些被认为是持久的消息提供支持,也就是说,它们比浏览器会话更持久,并将存储在数据库中。这些消息可以按您的意愿显示给用户,您可以让用户将它们标记为已读,删除它们,甚至回复它们。对于其中一些操作,您可以在project url.py中导入视图。
*为经过身份验证的用户支持持久和非持久消息。持久消息存储在数据库中。
*对于匿名用户,使用基于cookie/会话的方法存储消息。不支持匿名用户的持久消息。
*有一个统一的api用于向两种类型的用户显示消息,也就是说,您可以使用与django的消息框架相同的代码来添加和显示消息,但是,如果用户经过身份验证,则还有其他功能可用。
克隆这个git存储库(这个fork没有pypi包)。主分支是最新的稳定分支:
$git clone git://github.com/mpasternak/django monitio.git
2。确保"monitio"在"pythonpath"中。
3.将"monitio"和"company"添加到"installed_apps"设置中。
installed_apps=(
…
"django_sse"、
"corsheaders"、
"monitio"、
)
4。确保django的"messagemiddleware"在"middleware_classes"设置中(默认情况下是这样),同时在那里启用"corsmidleware"。如果要使用翻译,请添加"localemidleware":
middleware嫒类=(
…
"django.contrib.messages.middleware.MessageMiddleware"、
"corsheaders.middleware.corsmidleware"、
"django.middleware.locale.localemidleware",
…
)
5.为消息和静态URL添加上下文处理器:
context\u processors=(
…
'django.contrib.messages.context\u processors.messages',
'django.core.context\u processors.static',
…
)
6。将"monitio"url添加到url conf中。例如,为了使"http://domain.com/messages/"下的消息可用,请添加以下内容行到"urls.py"。
…
)
7。在您的设置中,将消息[存储后端](http://docs.djangoproject.com/en/dev/ref/contrib/messages/消息存储后端)设置为"monitio.storage.persistentmessagestorage":
消息存储="monitio.storage.persistentmessagestorage"
8。在您的设置中,添加一个合理的默认值,它将阻止向用户显示已读消息:
>9。设置'django sse'和'corsheaders':
'db':0,
}
cors\u origin\u whitelist=(
'127.0.0.1',
'127.0.0.1:8000',
)
10。使用
11设置数据库表。如果要使用捆绑的模板,请将"templates"目录添加到"template\u dirs"设置中:
template\u dirs=(
…
"path/to/monitio/templates")
12。为[nginx]设置一个生产服务器(http://nginx.org/)+[gunicorn](http://gunicorn.org),请使用以下配置:
location~^/messages{
proxy\u pass http://your gunicorn address…/
proxy\u buffering off;
proxy\u cache off;
proxy\u set\u header host$host;
proxy_set_header connection';
proxy_http_version 1.1;
chunked_transfer_encoding off;
}
,对于[gunicorn](http://gunicorn.org),确保安装了[gevent](http://www.gevent.org/)并使用参数"-k"运行[gunicorn](http://gunicorn.org)gevent`
目的如成功消息、警告等。
import monitio
持久消息级别:
monitio.info
monitio.success
monitio.warning
monitio.error
不同的是,具有这些级别的消息将是持久的:
这很重要。如果使用"monitio"常量,则消息将存储在数据库中并一直保存到有人显式删除它为止。如果使用"contrib.messages"常量,则获得与使用非持久性存储相同的行为,消息存储在数据库中,以确保接收,但在被访问后立即将其删除。
\[消息框架](http://docs.djangoproject.com/en/dev/ref/contrib/messages/),您仍然可以使用常规django api添加消息:
from django.contrib import messages
messages.add_message(request,messages.info,"hello world.")
这与使用"monitio"提供的api兼容,相当于从django.contrib import messages
import monitio
"hello world.")
nitio table until remove.')
或等效:
请注意,这仅适用于已登录的用户,因此,您可能需要使用"request.user.is_authenticated()"来确保当前用户不是匿名的。为匿名用户添加持久性消息会引发"notimplementederror"。
这是contrib消息中"add_message"的原型:
这是持久消息中"add_message"的原型。
def add_message(request,level,message,extra_tags='',fail_silented=false,subject='',user=none,email=false,from_user=none,expires=none,close_timeout=none):
您还可以设置是否要发送电子邮件通知。以下消息将作为消息存储在数据库中,并发送到与当前用户关联的电子邮件地址:
monitio.add_message(request,monitio.info,'message body',subject='please read me',email=true)
**注意!**目前的电子邮件通知太简单了,我不建议使用它们,我不建议使用它们。
用户sally下次登录时将看到此消息:
user=sally)
一旦消息过期,它将不会包含在返回的queryset中。目前没有从数据库中清除过期邮件的视图或方法。
`部分:
``
{%include"monitio/header.html"%}
```
这将包括"yaffle.js"、"monitio.js"monitio翻译和主题。
*在"body>;"部分中,将消息占位符放置在您喜欢的任何位置:
```
<;div id="monitiomessages">;<;div>;
```
*…准备初始化MuniTo,可选地传递主题参数:
`BR/> $(文档).Read(函数){BR/> $("MessagesPlaceholder")({ BR/> URL):"{%URL"MuniTIO:持久消息SSE"USER用户名%},
"主题":"基础"//移除对于"主题";"}";< < < > > >;不要忘记添加链接到"jQuery"、"选项"和"基础5",如有任何问题,请在"目录"中"检查",因为它比原始目录简单得多。
主题='',过期=无,关闭超时=无,SSE=真,
电子邮件=假):
uest.\u messages`设置为您在设置中配置的默认存储。持久性消息存储有一些Django内置存储没有的额外方法,这些方法可能非常有用:
***获取持久性消息**:获取已读和未读持久性消息
***获取持久性消息**:获取未读持久性消息
***获取非持久性消息**:获取非持久性消息消息
**count_unread**:统计持久和非持久未读消息
**count_persistent_unread**:统计持久未读消息
**count_nonpersistent**:统计非持久消息
未读邮件的数量收件箱{%if messages.count_persistent_unread>;0%}({{messages.count_persistent_unread}){%endif%}<;/a>;<;/ul>;
\django monitio is(c)2013[mpasternak](https://github.com/mpasternak)。
[philomat](https://github.com/philomat)是
[django persistent messages](https://github.com/philomat/django persistent messages)的原始代码的作者,然后由[maurojp](https://github.com/maurojp)分叉。