前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django messages 消息(下)

Django messages 消息(下)

作者头像
小团子
发布2019-07-18 14:58:18
8541
发布2019-07-18 14:58:18
举报
文章被收录于专栏:数据云团数据云团

Django messages 消息(中)

一、在视图及模板中使用

代码语言:javascript
复制
add_message(request, level, message, extra_tags="", fail_silently=False)

例:

新增消息

代码语言:javascript
复制
from django.contrib import messages
messages.add_message(request, messages.INFO, 'Hello world!')

有几个快捷方法提供标准的方式来新增消息并带有常见的标签(这些标签通常表示消息的 HTML 类型)

代码语言:javascript
复制
messages.debug(request, "%s SQL statements were executed." % count)
messages.info(request, "Three credits remain in your account.")
messages.success(request, "Profile details updated.")
messages.warning(request, "Your account expires in three days.")
messages.error(request, "Document deleted.")

二、显示消息

代码语言:javascript
复制
get_messages(request)

在模板中,可以像下面这样使用:

代码语言:javascript
复制
{% if messages %}
<ul class="messages">
  {% for message in messages %}
    <li {% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
  {% endfor %}
</ul>
{% endif %}

三、配置使用

在生产使用中可以把它整合成一个模板便于调用,结合前端显示当有错误或者其它信息时浏览器可以 alert 消息。

在 settings.py 添加

代码语言:javascript
复制
from django.contrib.messages import constants as message_constants

MESSAGE_LEVEL = message_constants.INFO

TEMPLATES = [
  {
    "BACKEND": "django.template.backends.django.DjangoTemplates",
    "DIRS": [os.path.join(BASE_DIR, "templates")],
    "APP_DIRS": True,
    "OPTIONS": {
      "context_processors": [
        "django.template.context_processors.debug",
        "django.template.context_processors.request",
        "django.contrib.auth.context_processors.auth",
        "django.contrib.messages.context_processors.messages",
      ]
    }
  }
]

在 views.py 中添加

代码语言:javascript
复制
from django.contrib import messages

def flash(request, title, text, level="info"):
  """
  利用 django 的 message 系统发送一个消息
  """
  level_map = {
    "info": messages.INFO,
    "debug": messages.DEBUG,
    "success": messages.SUCCESS,
    "warning": messages.WARNING,
    "error": messages.ERROR
  }
  
  level = level_map[level]
  
  messages.add_message(request, level, text, extra_tags=title)
  return "ok"

在 html 文件中添加

代码语言:javascript
复制
{% if messages %}
<script>
  {% for msg in messages %}
    alert("{{ msg.message }}")
  {% endfor %}
</script>
{% endif %}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档