django 使用内置messages的操作

yizhihongxing

下面是详细的“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日

相关文章

  • SpringCloud 服务负载均衡和调用 Ribbon、OpenFeign的方法

    关于SpringCloud服务负载均衡和调用Ribbon、OpenFeign的方法,以下是完整攻略: 什么是负载均衡 负载均衡(Load Balance)是指分摊到不同的工作单元上的计算机网络、服务器、磁盘、CPU等资源,以提高系统的性能、可靠性和稳定性。在分布式系统中,负载均衡是非常重要的。 SpringCloud中Ribbon和OpenFeign的介绍 …

    人工智能概览 2023年5月25日
    00
  • pytorch + visdom CNN处理自建图片数据集的方法

    对于使用PyTorch训练CNN的过程,一般情况下需要进行图片的预处理、数据集的加载,以及训练过程的可视化等步骤。其中,使用visdom进行训练过程的可视化非常方便,其支持的图形工具非常丰富。 下面,我们将围绕着“pytorch + visdom CNN处理自建图片数据集的方法”,从以下几个方面进行详细讲解。 1.数据集的准备 对于训练CNN所需的数据集,一…

    人工智能概论 2023年5月25日
    00
  • Shell实现多级菜单系统安装维护脚本实例分享

    关于“Shell实现多级菜单系统安装维护脚本实例分享”的攻略,我将从以下几个方面进行详细讲述: 安装Shell 首先,要实现多级菜单系统安装维护脚本,需要安装Shell,Shell操作系统提供了很多有用的指令和功能,而安装Shell有很多种方式,因此前置条件应是你已经成功安装了Shell。如果你尚未安装Shell,请通过相关渠道进行安装。 编写Shell脚本…

    人工智能概览 2023年5月25日
    00
  • OpenCV实现车牌定位(C++)

    OpenCV实现车牌定位(C++) 背景介绍 车牌定位是智能交通系统、物流系统等应用中的一个重要的识别环节。本文将介绍基于OpenCV库的车牌定位方法。 环境准备 在运行本文代码前,请确保已经安装以下环境:- OpenCV库- C++编译器 方法介绍 车牌定位主要有以下几个步骤: 1. 车辆图像预处理 车辆图像一般需要经过预处理才能进行车牌定位。预处理包括:…

    人工智能概览 2023年5月25日
    00
  • Python 机器学习之线性回归详解分析

    Python 机器学习之线性回归详解分析 1. 什么是线性回归 线性回归是机器学习中最基础和最常见的模型之一。它是一种用来预测连续数值输出的算法,可以帮助我们建立输入特征和输出之间的线性关系。 2. 线性回归原理 线性回归的核心是建立输入特征与输出之间的线性关系。假设有一个简单的线性回归模型: y = β0 + β1×1 + ε 其中,y 是输出变量,x1 …

    人工智能概论 2023年5月24日
    00
  • 简单了解Nginx七层负载均衡的几种调度算法

    简单了解Nginx七层负载均衡的几种调度算法 什么是七层负载均衡? 七层负载均衡是指在 OSI(开放系统互联)网络模型的第七层(应用层)上进行负载均衡,它使用应用层协议(如HTTP)来决定将请求转发到哪个服务器上。相比较传统的四层负载均衡,七层负载均衡能够更加精确地控制流量分配和应用请求的处理。 Nginx七层负载均衡几种调度算法 加权轮询(Weighted…

    人工智能概览 2023年5月25日
    00
  • Windows下用Nginx配置https服务器及反向代理的问题

    下面我将为您介绍如何在Windows下使用Nginx配置HTTPS服务器及反向代理的完整攻略。 确定所需软件及工具 在开始之前,请确认您已经安装以下软件及工具: Windows操作系统 Nginx OpenSSL curl 生成SSL证书 打开命令提示符窗口。 进入OpenSSL的目录下,并执行以下命令生成SSL证书: openssl req -x509 -…

    人工智能概览 2023年5月25日
    00
  • 关于Django显示时间你应该知道的一些问题

    让我来为你详细讲解“关于Django显示时间你应该知道的一些问题”的完整攻略。 1. 问题背景 在Django开发中,使用到时间轴的场景非常常见,例如博客的发布时间、网站的上线时间等等。如果不了解Django时间显示的相关知识,可能会在程序的功能和视觉效果上出现问题。因此,在这里,我们将为您详细讲解Django时间显示相关的问题及解决方案。 2. 时区设置 …

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