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

如何在管理员端保存数据时显示错误信息?我使用models.model创建模型

在管理员端保存数据时显示错误信息,可以通过以下步骤实现:

  1. 使用models.model创建模型:首先,在Django中使用models模块创建模型,定义数据表的结构和字段。例如,创建一个名为"User"的模型来保存用户信息。
代码语言:txt
复制
from django.db import models

class User(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField(unique=True)
    password = models.CharField(max_length=100)
  1. 在视图函数中处理表单数据:在管理员端的视图函数中,接收并处理表单数据。可以使用Django的Form类来验证数据的有效性。如果数据验证失败,可以将错误信息传递给模板。
代码语言:txt
复制
from django.shortcuts import render
from .forms import UserForm

def save_user(request):
    if request.method == 'POST':
        form = UserForm(request.POST)
        if form.is_valid():
            # 保存数据
            form.save()
            return render(request, 'success.html')
    else:
        form = UserForm()
    
    return render(request, 'admin.html', {'form': form})
  1. 创建表单类并添加验证规则:在forms.py文件中创建表单类,并为每个字段添加验证规则。可以使用Django提供的内置验证器或自定义验证器。
代码语言:txt
复制
from django import forms
from .models import User

class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['name', 'email', 'password']
    
    def clean_email(self):
        email = self.cleaned_data.get('email')
        if User.objects.filter(email=email).exists():
            raise forms.ValidationError('该邮箱已被注册')
        return email

在上述代码中,clean_email()方法用于验证email字段的唯一性,如果该邮箱已被注册,则抛出ValidationError异常。

  1. 在模板中显示错误信息:在admin.html模板中,可以使用Django模板语言来显示表单的错误信息。
代码语言:txt
复制
<form method="post" action="{% url 'save_user' %}">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">保存</button>
</form>

{% if form.errors %}
  <div class="error">
    {% for field in form %}
      {% for error in field.errors %}
        <p>{{ error }}</p>
      {% endfor %}
    {% endfor %}
  </div>
{% endif %}

在上述代码中,form.errors用于判断表单是否有错误信息,如果有,则通过循环遍历的方式将错误信息显示在页面上。

通过以上步骤,当管理员在保存数据时,如果数据验证失败,错误信息将会显示在管理员端,帮助管理员及时发现并修正错误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

​第 07 篇:创作后台开启,请开始你的表演!

它所言,我们确实还没有发布任何文章,本节我们将使用 django 自带的 admin 后台来发布我们的博客文章。...比如对于 Post 模型,要让他在 admin 后台显示为中文,如下: class Post(models.Model): ......答案是不能,因为虽然第一次保存数据,会根据默认值指定为当前时间,但是当模型数据第二次修改时,由于 modified_time 已经有值,即第一次的默认值,那么第二次保存默认值就不会起作用了,如果我们不修改...modified_time 的值的话,其值永远是第一次保存数据的默认值。...所以这里问题的关键是每次保存模型,都应该修改 modified_time 的值。每一个 Model 都有一个 save 方法,这个方法包含了将 model 数据保存数据库中的逻辑。

1.1K20

【云+社区年度正文】Django从入门到精通No.2----模型

有两个额外的可选参数: auto_now ,每次保存对象自动设为当前日期 auto_now_add ,创建对象自动设为当前日期。...help_text: 字段的提示信息 choices:显示选择框的内容,用不变动的数据放在内存中以避免跨表操作 verbose_name: 显示的字段名称 error_messages:自定义错误信息...# 在Admin或ModelForm中显示关联数据,提供的条件,字典类型 symmetrical=None # 仅用于多对多自关联,用于指定内部是否创建反向操作的字段,...# 默认创建第三张表数据库中表的名称 3.一对一 一对一其实就是 一对多 + 唯一索引,当两个类之间有继承关系,默认会创建一个一对一字段,一对一使用OneToOneField来实现,如下: from...,当前表与其关联的行的行为 五、管理员登陆 为了能让大家提前看到django的数据操作,django内置了一款非常到位的系统管理员登陆设计系统,首先我们创建下用户,如下: python manage.py

2.1K00
  • 【Django】 开发:静态文件,应用和模型

    静态文件 1.什么是静态文件 不能与服务器做动态交互的文件都是静态文件 :图片,css,js, 音频,视频,html 文件 (部分) 2.静态文件配置 在 settings.py 中配置一下两项内容...'PASSWORD':'123456' HOST 连接数据使用哪个主机。 'HOST':'127.0.0.1' PORT 连接数据使用的端口。...模型类Models 创建 模型类需继承自 django.db.models.Model Models 的语法规范 from django.db import models class 模型类名(models.Model...auto_now_add: 当对象第一次被创建自动设置当前时间 (取值:True/False)。 default: 设置当前时间 (取值:字符串格式时间: ‘2019-6-1’)。...) 请选择修复: 1)现在提供一次性默认值(将对所有现有行设置此列的空值) 2)退出,让在models.py中添加一个默认值 选择一个选项: 错误原因 当对模型类新添加一个字段可出现该错误 原理是

    1.8K20

    Admin站点

    b.创建超级管理员 python manage.py createsuperuser ?...在创建应用时,Django会向apps.py文件中写入一个该应用的配置类, from django.apps import AppConfig class BooktestConfig(AppConfig...AppConfig.verbose_name 属性用于设置该应用的直观可读的名字,此名字在Django提供的Admin管理站点中会显示, 注册模型类 登录后台管理后,默认没有我们创建的应用中定义的模型类...在列表页中点击"增加"可以进入增加页,Django会根据模型类的不同,生成不同的表单控件,按提示填写表单内容后点击"保存",完成数据创建创建成功后返回列表页。 ?...注意:fields与fieldsets两者选一使用。 c. 关联对象 在一对多的关系中,可以在一的编辑页面中编辑多端的对象,嵌入多端对象的方式包括表格、块两种。

    2.1K20

    Django3.2边学边记—Adimn站点管理

    准备工作 创建管理员的用户名和密码:  1 python manage.py createsuperuser   根据提示创建用户名 密码 在admin.py中注册模型类 1234567 from django.contrib...:类似以下后缀 1 http://127.0.0.1:8000/admin/ ---- 管理页面显示 创建模型管理类来管理某个模型在后台显示的页面形式 ModelAdmin类可以控制不同模型在Admin...)class TestAdmin(admin.ModelAdmin):    pass 页大小 每页中显示多少条数据,默认为每页显示100条数据,设置为20 12 class TestAdmin(admin.ModelAdmin...atitle.short_description='标题'   如果是更改模型字段显示的列标题,可以在定义模型字段,设置verbose_name的值 ,或者封装成方法,再对方法使用上面那个属性,模型字段不能直接使用那个属性...):    ....         """    empty_value:属性值为空 处理    description:显示名    ordering:排序依据    boolean:返回值为bool

    1.2K00

    Django进阶知识

    Model 到目前为止,当我们的程序涉及到数据库相关操作,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作...使用的字段名,用于代替 【表名_set】 : obj.表名_set.all() related_query_name=None, # 反向操作使用的连接前缀,用于替换【表名】...# 在Admin或ModelForm中显示关联数据,提供的条件: # :...使用的字段名,用于代替 【表名_set】 : obj.表名_set.all() related_query_name=None, # 反向操作使用的连接前缀,用于替换【表名】...# 在Admin或ModelForm中显示关联数据,提供的条件: #

    3.6K20

    Django3.2边学边记—Adimn站点管理

    准备工作 创建管理员的用户名和密码:  1 python manage.py createsuperuser   根据提示创建用户名 密码 在admin.py中注册模型类 1234567 from django.contrib...:类似以下后缀 1 http://127.0.0.1:8000/admin/ ---- 管理页面显示 创建模型管理类来管理某个模型在后台显示的页面形式 ModelAdmin类可以控制不同模型在Admin...)class TestAdmin(admin.ModelAdmin):    pass 页大小 每页中显示多少条数据,默认为每页显示100条数据,设置为20 12 class TestAdmin(admin.ModelAdmin...atitle.short_description='标题'   如果是更改模型字段显示的列标题,可以在定义模型字段,设置verbose_name的值 ,或者封装成方法,再对方法使用上面那个属性,模型字段不能直接使用那个属性...):    ....         """    empty_value:属性值为空 处理    description:显示名    ordering:排序依据    boolean:返回值为bool

    1.3K30

    三、模型(一)

    当我们的程序涉及到数据库相关操作,我们一般都会这么做: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import...Django Admin中的错误信息会优先根据Admiin内部的ModelForm错误信息提示,如果都成功,才来检查Model的字段并显示指定错误信息 b....当你使用Django modle API创建对象Django并未将对象保存数据库内,除非你调用`` save()`` 方法。...所有的模型都自动拥有一个 objects 管理器;你可以在想要查找数据使用它。 最后,还有 all() 方法。这个方法返回返回数据库中所有的记录。...删除对象 删除数据要谨慎! 为了预防误删除掉某一个表内的所有数据,Django要求在删除表内所有数据显示使用all()。

    4.5K90

    Django-多对多关系的三种创建方式-forms组件使用-cookie与session-08

    目录 表模型类多对多关系的三种创建方式 django forms 组件 登录功能手写推理过程 整段代码可以放过来 forms 组件使用 forms 后端定义规则并校验结果 forms 前端渲染标签组件...cookie 操作 小练习 如何操作 session 设置 session 获取 session 删除 session 设置 session 超时时间 表模型类多对多关系的三种创建方式 关系表可能还会有一个关系创建时间字段...cookie 和 session 其实是通用技术思想,不同语言都有对应的实现 cookie 工作原理 cookie 就是保存在客户浏览器上的键值对 工作原理: 当你登录成功之后,浏览器上会保存一些信息...session 是保存在服务的键值对 session 虽然是保存在服务器上的键值对,但是他是依赖于 cookie 工作的(所有的保存用户状态或者各种校验基本都需要依赖于 cookie) 工作原理...: 服务返回给浏览器一个随机的字符串,浏览器以键值对的形式保存(sessionid:随机字符串) 浏览器在访问服务的时候,就会将这个随机字符串携带上,后端获取随机字符串与后端的记录作对比(随机字符串

    2.8K20

    django之评论系统及多级评论

    auto_now_add 的作用是,当评论数据保存数据,自动把 created_time 的值指定为当前时间。...created_time 记录用户发表评论的时间,我们肯定不希望用户在发表评论还得自己手动填写评论发表时间,这个时间应该自动生成。 创建数据模型就要迁移数据库,迁移数据库的命令也在前面讲过。...回想一下,我们使用数据保存我们创建的博客文章,但是我们从头到尾没有写过任何和数据库有关的代码(要知道数据库自身也有一门数据库语言),这是因为 Django 的 ORM 系统内部帮我们做了一些事情。...Comment 模型类的实例,但还不保存评论数据数据库。...errors 中,模板便将错误信息渲染显示

    6.9K61

    基于 Django 信号机制实现类似触发器的效果

    我们都知道,在关系数据库中,为了保证数据完整性,我们都会使用一个叫做触发器的玩意。今天就基于Django信号机制实现类似触发器的效果,在此之前先简单介绍一下触发器。...例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,修改数据显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。...,需要在对应的班级表中把学生数量+1 删除一条学生数据的时候,需要在对应的班级表中把学生数量-1 新建项目 新建项目可以参考文档用命令,也可以直接用 PyCharm,这里直接使用 PyCharm 来创建...接下来就是创建一个管理员账号,在 Terminal 下执行命令python manage.py createsuperuser,然后按照提示输入信息就行了。...接下来打开浏览器,地址栏输入:http://127.0.0.1:8000/admin,会发现进入了一个登录页面,用之前创建管理员账号登录,登陆之后我们会发现并没有学生和班级。

    2.5K30

    Django模型model

    定义模型类 在模型中定义属性,会生成数据库表中的字段 django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单使用的默认html控件 在管理站点最低限度的验证 django...模型类中定义类Meta 元信息db_table:定义数据表名称,推荐使用小写字母,数据表的默认名称 _ ordering:对象的默认排序字段,获取对象的列表使用,接收属性构成的列表...Django的模型进行数据库的查询操作的接口,Django应用的每个模型都拥有至少一个管理器 自定义管理器类主要用于两种情况 向管理器类中添加额外的方法创建管理器对象保存数据数据库 class TestInfoManager...):tests = TestInfoManager() 当创建对象,django不会对数据库进行读写操作 在管理器的方法中,可以通过self.model来得到它所属的模型类 调用save()方法才与数据库交互...,将对象保存数据库中 使用关键字参数构造模型对象很麻烦,推荐使用下面的两种之式 说明: init 方法已经在基类models.Model使用,在自定义模型中无法使用模型类中增加一个类方法保存数据数据

    13410

    django开发个人简易Blog——数据模型

    ,例如上一篇中我们创建的blogapp,其目录下有models.py这个文件,就是用来定义数据模型的,而django自带的app,我们也可以在django的安装目录下找到。...,否则,会提示具体的错误信息。...从图中可以看出创建了9个数据表,并且提示是否为系统创建一个超级管理员,为了以后登录系统,我们输入yes。 之后按照提示输入用户名及密码即可。...数据模型设计: 由于这只是一个简单的博客,并且功能有限,所以,数据模型也是比较简单的,仅包括文章表、分类表及评论表这三个表,至于用户验证的部分,使用django自带的用户表。...我们创建的blogapp中,有一个models.py的文件,模型的定义就在这个文件里,每一个数据模型对应一个类,只要这个类继承自models.Model

    89880

    Django之Model世界

    Model 到目前为止,当我们的程序涉及到数据库相关操作,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作...当对象首次被创建,自动将该字段的值设置为当前时间.通常用于表示对象创建时间. admin 用一个文本框 来表示该字段数据(附带一个 JavaScript...这三个参数可以同时使用. 已经告诉过你 match 仅应用于 base filename, 而不是路径全名....---无论添加或修改,都是当前操作的时间   auto_now_add 自动创建---永远是创建的时间 5、choices GENDER_CHOICE = ( (u'M', u'Male...,而'user_type__caption'即另一张表中的数据根据user对应的值进行显示 一对多之正向查找通过UserInfo表查找UserType的内容,使用双下划线(__),了不起的双下划线. #

    2.2K20

    何在Django中使用聚合的实现示例

    在本文中,想向您介绍如何在Django中使用聚合,聚合的含义是“内容相关项的集合,以便它们可以显示或链接到”。...在Django中,我们使用的情况例如: 用于在Django模型数据库表中查找列的“最大值”,“最小值”。 用于基于列在数据库表中查找记录的“计数”。 用于查找一组相似对象的“平均值”值。...在大多数情况下,我们对数据类型为“整数”,“浮点数”,“日期”,“日期时间”等的列使用聚合。 本质上,聚合不过是对一组行执行操作的一种方式。在数据库中,它们由运算符表示为sum,avg等。...让我们从新建一个工程开始: #创建工程 django-admin startproject MyProject #创建应用 python manage.py startapp Myapp 加应用到settings.py...', 'django.contrib.staticfiles', 'Myapp' #newly added ] 执行migrate命令: python manage.py migrate 创建管理员用户

    1.7K31

    django2.0入门教程第二节

    继上篇 django2.0入门教程第一节,生成了投票应用,接下来讲解如何使用django的模型数据库进行交互 数据库设置 打开mysite/settings.py,可看到默认情况下,django使用的是...OK 以上命令将django激活的应用所需的数据创建好了 创建模型 django的模型(models)在本质上就是对数据表的定义。...在django中是不需要直接与数据库交互的,所有对数据库的操作都可以映射为模型类的操作,有一个数据表,就有一个模型类与之对应 polls/models.py #_*_coding:utf8_*_ from...,建议安装ipython, pip install ipython, 这样,django会自动进入ipython的交互界面,就拥有了华丽的语法高亮以及智能流畅的代码自动补全功能 用交互客户测试对数据库的操作...django自带了一个管理后台,我们只需创建一个管理员用户即可使用 创建一个后台管理员用户: $ python manage.py createsuperuser Username (leave blank

    71030

    drf序列化器之反序列化的数据验证

    使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据保存模型类对象。...django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] 创建模型...manage.py migrate 2、字段验证 经过上面的准备工作,接下来就可以给图书信息增加图书的功能,需要对来自客户数据进行处理,例如,验证和保存数据库中。...,客户提交数据的时候使用,不会提供给客户 pub_date = serializers.DateField(required=True,label="发布日期", help_text="发布日期...API页面显示的字段名称 help_text 用于HTML展示API页面显示的字段帮助提示信息

    2.1K30
    领券