django 使用内置messages的操作

下面是详细的“Django 使用内置 messages 的操作”的攻略:

什么是 Django messages

Django 的 messages 应用就是用来在应用程序的不同部分之间传递一些短消息,以便完成一些非持久化的任务,比如:将一个未认证用户重定向到登录页面、在表单提交后显示成功的消息、显示错误的消息等等。

如何在 Django 中使用 messages

1. 配置 settings.py

首先,需要在 INSTALLED_APPS 中添加 django.contrib.messages

INSTALLED_APPS = [
    # ...
    'django.contrib.staticfiles',
    'django.contrib.messages',  # 添加这行
    # ...
]

还要在 MIDDLEWARE 中添加 django.contrib.sessions.middleware.SessionMiddlewaredjango.contrib.messages.middleware.MessageMiddleware

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware', # 添加这行
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware', # 添加这行
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

然后需要配置消息存储后端 MESSAGE_STORAGE,可以选择使用 cookie 或者 session (默认为 session):

MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage' # session 存储
# 或者
MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage' # cookie 存储

2. 向 views.py 中添加加入 messages 的逻辑

在 views.py 中,先导入 messages 模块:

from django.contrib import messages

然后在需要加入消息的地方添加:

messages.success(request, 'Your message has been added!')

其中 success 可以是以下任意一种:

  • debug
  • info
  • success
  • warning
  • error

3. 在 HTML 模板中添加消息代码

最后,在需要显示消息的 HTML 模板中添加以下代码:

{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}

示例 1: 在表单提交后显示成功的消息

首先,在 HTML 模板中,可以添加一个类似于下面这样的代码:

{% if messages %}
<ul class="messages">
{% for message in messages %}
  <li {% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endif %}
</ul>
{% endif %}

然后在 views.py 文件中添加逻辑:

from django.shortcuts import render
from django.contrib import messages

def my_view(request):
    # 处理表单的逻辑
    form = MyForm(request.POST)
    if form.is_valid():
        # 如果表单验证通过,就执行其他逻辑,然后在提交后显示成功的消息
        messages.success(request, '表单提交成功!')
        return render(request, 'my_template.html', {'form': form})

    # 如果表单验证不通过,就返回错误信息
    else:
        messages.error(request, '错误的表单!')
        return render(request, 'my_template.html', {'form': form})

示例 2: 重定向到登录页面并显示消息

from django.contrib import messages

# ...

if form.is_valid():
    # 如果表单验证通过,就重定向到登录页面并在重定向之前设置成功的消息
    messages.success(request, '表单提交成功!')
    return redirect('login')

在登录页面的相关 HTML 模板中添加消息代码即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django 使用内置messages的操作 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • ubuntu16.04自动设置行号的步骤详解

    请注意查看下面的标准markdown格式文本。 Ubuntu16.04自动设置行号的步骤详解 为了提高Linux系统的编程效率,我们有时候需要在vim等编辑器中开启行号功能,方便我们进行代码编写,并且在调试过程中更便捷地排查错误。在下面的几步中,我将详细介绍如何在Ubuntu16.04中自动设置行号功能。 步骤一:检查vim是否已安装 在终端中输入以下命令来…

    人工智能概览 2023年5月25日
    00
  • C#添加、读取Word脚注尾注的方法

    添加、读取Word文档的脚注和尾注,需要使用C#中的Microsoft.Office.Interop.Word库来实现。 以下是在Visual Studio 2019中进行的操作步骤: 步骤1:添加Microsoft.Office.Interop.Word库 在Visual Studio中,打开你的项目,右键选择“解决方案” -> “管理NuGet程序…

    人工智能概论 2023年5月25日
    00
  • QT实现视频传输功能

    QT实现视频传输功能 本文介绍如何使用QT实现基于网络的视频传输功能。 1. 准备工作 在开始实现视频传输功能之前,需要安装QT以及相关的编译工具。QT是一个跨平台的C++开发框架,提供了很多用于网络编程的类库,方便我们实现视频传输功能。 在此之前,需要确保你已经安装了QT以及编译工具,在安装过程中可以选择安装相关的类库。 2. 实现视频传输功能 2.1. …

    人工智能概览 2023年5月25日
    00
  • OpenCV实战案例之车道线识别详解

    OpenCV实战案例之车道线识别详解 引言 车道线识别是自动驾驶领域中重要的一环,本文介绍了使用OpenCV进行车道线识别的完整攻略。 前置知识 本文假设读者已经掌握以下知识: Python编程语言基础 OpenCV基本操作和图像处理 准备工作 安装OpenCV 为了使用OpenCV进行图像处理操作,需要先安装OpenCV。可以使用pip命令来安装openc…

    人工智能概览 2023年5月25日
    00
  • C++求最大公约数四种方法解析

    C++求最大公约数四种方法解析 在C++编程中,求最大公约数是一个基础而重要的问题。此处我们将介绍四种常见的求最大公约数的方法,包括暴力枚举法、更相减损法、辗转相除法、以及辗转相减法。 1. 暴力枚举法 暴力枚举法是一种最基础的求最大公约数的方法,其思路基于枚举法。具体来说,我们可以简单地从较小数开始逆序枚举每一个可能的公约数,直到找到两个整数均能整除的最大…

    人工智能概览 2023年5月25日
    00
  • 如何查看Django ORM执行的SQL语句的实现

    查看Django ORM执行的SQL语句对于排除应用程序中出现的问题、优化数据库性能以及更好地了解Django ORM的工作原理都非常重要。下面是查看Django ORM执行的SQL语句的实现攻略: 1. 启用日志记录 Django提供了日志记录功能,可以将执行的SQL语句记录到日志中。要启用日志记录,请按照以下步骤操作: 打开你的项目的settings.p…

    人工智能概论 2023年5月25日
    00
  • Python3+cgroupspy安装使用简介

    Python3+cgroupspy安装使用简介 什么是cgroup? cgroup 全称为 Control Group,中文翻译为“控制组”,它是一种 Linux 内核机制,用于限制、记录、隔离和管理系统资源(比如 CPU、内存、硬盘 I/O)。通过使用 cgroup,你可以对应用程序的资源使用进行限制,从而避免因为某个应用程序对某一资源的过度消耗而使其他应…

    人工智能概览 2023年5月25日
    00
  • Python的命令行参数实例详解

    Python的命令行参数实例详解 什么是命令行参数 在运行程序时,我们可以在命令行中输入程序名以及一些参数,这些参数也称为命令行参数。Python作为一门通用编程语言,也提供了命令行参数的处理方式,以方便实现程序的高度定制化。 命令行参数的获取 Python标准库中提供了sys模块,它包含了命令行参数的获取和处理。具体使用步骤如下: 导入sys模块。 pyt…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部