首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在form.save之前显示Django友好的forms.ValidationError/message.error?

在Django中,我们可以在form.save()方法之前显示Django友好的forms.ValidationError或message.error。下面是一种实现方式:

  1. 首先,在你的视图函数中,你需要导入forms模块和messages模块:
代码语言:txt
复制
from django import forms
from django.contrib import messages
  1. 在视图函数中,你可以使用try-except块来捕获可能引发的ValidationError异常。在except块中,你可以使用messages.error()方法来显示错误消息,并将其传递给模板渲染:
代码语言:txt
复制
def your_view(request):
    if request.method == 'POST':
        form = YourForm(request.POST)
        if form.is_valid():
            try:
                form.save()
                messages.success(request, '保存成功!')
            except forms.ValidationError as e:
                messages.error(request, e.message)
    else:
        form = YourForm()
    
    return render(request, 'your_template.html', {'form': form})
  1. 在模板中,你可以使用messages模板标签来显示错误消息。例如,你可以在表单上方添加以下代码来显示错误消息:
代码语言:txt
复制
{% if messages %}
    <ul class="messages">
        {% for message in messages %}
            <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
        {% endfor %}
    </ul>
{% endif %}

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">保存</button>
</form>

这样,当form.save()方法之前发生ValidationError异常时,错误消息将被显示在模板中,并且用户将能够看到友好的错误提示。

请注意,这只是一种实现方式,你可以根据自己的需求进行调整和扩展。另外,关于Django的forms.ValidationError和messages模块的更多信息,你可以参考以下链接:

  • forms.ValidationError文档:https://docs.djangoproject.com/en/3.2/ref/forms/validation/#django.core.exceptions.ValidationError
  • messages模块文档:https://docs.djangoproject.com/en/3.2/ref/contrib/messages/
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • django入门:Admin管理系统及表单(干货)

    视图及模版》 django 的强大之处还有自带后台管理系统,真心给力!!...这一部分将介绍 django 自带的后台管理系统,以及如何通过表单提交数据 django admin 后台管理系统 在后台管理系统注册创建的模型 from django.contrib import admin...admin 管理界面 为了可以和用户进行交流,我们需要获取用户的一些评论之类的,所以我们需要通过表单让用户提交信息,接下来我们将了解下 django 的表单 django 表单 存在相应模型(POST...# commit=False 表示只生成模型类的实例,不马上保存到数据库 post = form.save(commit=Flase) # 将作者和文章进行关联...,当提交的信息发生错误的时候,就会显示错误让用户改正 ?

    3K21

    Django项目知识点(二)

    . 5.2 注册过滤器 通过django.template.Library 它的实例的 filter 方法 filter 有两个参数: name 过滤器的名称,是个字符串,默认使用方法名作为过滤器的名称...用户注册 官方文档 django的强大之处在于开发效率高,内置了权限模块之类的很多常用功能。django内置权限系统有大的自定义功能扩展,不需要重复造轮子。...,如email user app下的model from django.contrib.auth.models import AbstractUser,UserManager as _UserManager...通过上面改写UserManager的create_superuser创建超级用户可以不提供email字段 6.2 AbstractUser AbstractUser这是django特定的抽象用户 导入方式...在项目中一般叫verification 验证的意思 用户校验典型的POST,需创建forms.py from django_redis import get_redis_connection class

    77430

    关于“Python”的核心知识点整理大全56

    在3处,我们显示表单,从中可知Django使得完 成显示表单等任务有多简单:我们只需包含模板变量{{ form.as_p }},就可让Django自动创建显 示表单所需的全部字段。...修饰符as_p让Django以段落格式渲染所有表单元素,这是一种整洁地显 示表单的简单方式。 Django不会为表单创建提交按钮,因此我们在4处定义了一个这样的按钮。 6....但在此之前,我们需要在forms.py中再添加一个类。 1....小部件(widget)是一个HTML表单元素,如单行文本框、 多行文本区域或下拉列表。通过设置属性widgets,可覆盖Django选择的默认小部件。...在7处,我们将用户重定向到显示相关主题的页面。调用reverse()时,需要提供两个实参: 要根据它来生成URL的URL模式的名称;列表args,其中包含要包含在URL中的所有实参。

    14110

    使用Django、Prometheus和Kubernetes定制应用指标

    什么样的指标才是有用的?考虑下面几点: 运行一个电子商务网站并追踪平均订单数量。突然间订单的数量不那么平均了。有了可靠的应用指标和监控,你就可以在损失殆尽之前捕获到Bug。...设置Django应用程序 除了明显的依赖(pip install Django)之外,我们还需要为宠物项目(译者注:demo)添加一些额外的包。...这将为我们提供一个Python的Prometheus客户端,以及一些有用的Django hook,包括中间件和一个优雅的DB包装器。...项目以及相应的设置,可以为 django-prometheus添加需要的配置项了。...显示散步距离和创建散步的指标 定义的指标此时已经可以在prometheus里查找到了 至此,我们已经在代码中添加了自定义指标,整合了应用以追踪指标,并验证了这些指标已在/metrics 上更新并可用。

    1.3K20

    Django 使用 Session 实现用户唯一标识

    2、解决方案可以使用 Django 的 session 来实现出价人标识。Session 是一个存储在服务器端的临时数据,可以用来存储用户的相关信息。...在 views.py 中,在创建 Bid 实例之前,先检查 request.session.session_key 是否存在。如果不存在,则创建一个新的 session。...如果已登录,则显示用户的出价记录。如果没有登录,则显示一个表单,让用户输入姓名。在处理表单时,将用户输入的姓名存储在 SessionName 模型中。...在 views.py 中,在创建 Bid 实例之前,先检查 SessionName 模型中是否存在与 request.session.session_key 对应的记录。...代码示例:from django.db import modelsfrom django.contrib.sessions.models import Sessionclass Lot(models.Model

    11410

    Python 项目实践三(Web应用程序)第四篇

    你还将学习Django如何防范对基于表单的网页发起的常见攻击,这让你无需花太多时间考虑确保应用程序安全的问题。...一 让用户能够输入数据 建立用于创建用户账户的身份验证系统之前,我们先来添加几个页面,让用户能够输入数据。我们将让用户能够添加新主题、添加新条目以及编辑既有条目。...1.1 用于添加主题的表单 让用户输入并提交信息的页面都是表单,那怕它看起来不像表单。用户输入信息时,我们需要进行验证,确认提供的信息是正确的数据类型,且不是恶意的信息,如中断服务器的代码。...然后,我们再对这些有效信息进行处理,并将其保存到数据库的合适地方。这些工作很多都是由Django自动完成的。...在Django中,创建表单的最简单方式是使用ModelForm,它根据前面的模型中的信息自动创建表单。

    1.2K60

    django 1.8 官方文档翻译:13-1-2 使用Django认证系统

    这些权限将在你运行manage.py migrate时创建;在添加django.contrib.auth到INSTALLED_APPS中之后,当你第一次运行migrate时,将会为之前安装的模型创建默认的权限...login()使用Django的会话框架保存用户的ID在会话中。 注意任何在匿名会话中设置的数据都会在用户登入后的会话中都会记住。...这是个 django.contrib.auth.context_processors实例的封装,他是一个对于模板友好的权限代理。...可以像其它任何Django模型一样创建和删除用户。可以创建组,并分配权限给用户和组。admin中还会保存和显示对用户模型编辑的日志。...修改密码 用户密码不会显示在admin上(也不会存储在数据库中),但是会显示 密码存储的细节。 这个信息的显示中包含一条指向修改密码表单的链接,允许管理员修改用户的密码。

    4.7K20

    关于“Python”的核心知识点整理大全55

    为列出时间戳(见4), 我们显示属性date_added的值。在Django模板中,竖线(|)表示模板过滤器——对模板变量的值 进行修改的函数。...现在,主题列 表中的每个主题都是一个链接,链接到显示相应主题的页面,如http://localhost:8000/topics/1/。...最后,你使用了模板继承,它可简化各个模板的 结构,并使得修改网站更容易。 在第19章,我们将创建对用户友好而直观的网页,让用户无需通过管理网站就能添加新的主 题和条目,以及编辑既有的条目。...第 19 章 用户账户 19.1 让用户能够输入数据 建立用于创建用户账户的身份验证系统之前,我们先来添加几个页面,让用户能够输入数据。...用于添加主题的表单 让用户输入并提交信息的页面都是表单,那怕它看起来不像表单。用户输入信息时,我们需 要进行验证,确认提供的信息是正确的数据类型,且不是恶意的信息,如中断服务器的代码。

    16610

    关于“Python”的核心知识点整理大全60

    定义HTML头部 对base.html所做的第一项修改是,在这个文件中定义HTML头部,使得显示“学习笔记”的 每个页面时,浏览器标题栏都显示这个网站的名称。...HTML文件的头部不包含任何内容:它只是将正确显示页面所需 的信息告诉浏览器。在5处,我们包含了一个title元素,在浏览器中打开网站“学习笔记”的 页面时,浏览器的标题栏将显示该元素的内容。...在6处,我们使用了django-bootstrap3的一个自定义模板标签,它让Django包含所有的 Bootstrap样式文件。...接下来的标签启用你可能在页面中使用的所有交互式行为,如可折叠的导航 栏。7处为结束标签。 2....选择器 navbar-right设置一组链接的样式,使其出现在导航栏右边——登录链接和注册链接通常出现在 这里。在这里,我们要么显示问候语和注销链接,要么显示注册链接和登录链接。

    13610

    【玩转全栈】----基于ModelForm完成用户管理页面

    ——ModelForm 在Django开发中,ModelForm 是 Django 提供的一个用于简化表单处理的工具,它能通过模型(Model)自动生成表单,而不需要手动定义每个字段。...verbose_name参数即是友好的中文名称,{ { items.label }}可以使得遍历每个字段并创建输入框时在前面加字段的另一名称。...将用户点击编辑行的id传给视图函数,创建实例传参instance=根据id获取到的数据对象,这样即可在输入框中显示原始数据;用UserForm接收用户提交的数据,使用ModelForm的form.save...(对象) # 加上instance=row_object会默认将对应ID的数据显示到页面输入框中,这就比之前的部门管理要方便很多 form = UserForm(instance...(对象) # 加上instance=row_object会默认将对应ID的数据显示到页面输入框中,这就比之前的部门管理要方便很多 form = UserForm(instance

    3700

    被解放的姜戈06 假作真时

    之前了解了: 创建Django项目 数据库 模板 表格提交 admin管理页面 上面的功能模块允许我们做出一个具有互动性的站点,但无法验证用户的身份。我们这次了解用户验证部分。...实验上面的处理函数的效果。 在Django中,我们还可以利用装饰器,根据用户的登录状况,来决定views.py中处理函数的显示效果。相对于上面的if结构,装饰器使用起来更加方便。...增加处理函数,显示该模板,然后查看不同登录情况下的显示结果。 管家冷不丁的说,“你认识他们?!”  用户注册 我们上面利用了admin管理页面来增加和删除用户。...form = UserCreationForm(request.POST) if form.is_valid(): new_user = form.save...总结 正如我们上面提到的,用户登陆系统的最大功能是区分登入和未登入用户,向他们提供不同的内容和服务。 我们看到了用户验证的基本流程,也看到了如何在views.py和模板中区分用户。

    1.3K60

    基于django的视频点播网站开发-step9-后台视频管理功能

    这一讲非常重要,因为你将学习到一些之前没有学过的技术,比如大文件上传技术。...个人博客:mypython.me 视频上传 我们先来实现视频的上传,视频的上传采用的是分块上传的策略,并用了分块上传类库:django_chunked_upload,使用该类库,再配合前端上传js库(jquery.fileupload.js...照例先编写添加视频的路由 添加视频,当然需要上传视频的页面,我们的页面是video_add路由来显示,通过urls .py中指定 path('video\_add/', views.AddVideoView.as...myadmin/video_add.html中实现了上传视频的全过程,视频的上传采用的是分块上传的策略,前端使用的是js上传库(jquery.fileupload.js),后端使用的是django_chunked_upload...w=1000&h=727&f=png&s=128275] 要填写的视频资料有视频标题、描述、分类、封面, 其中分类是通过get_context_data()带过来的, 填写后,点击**发布**,django

    1.7K30
    领券