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

为什么我在提交我的django表单时得到一个不为空的约束失败?

在提交Django表单时,如果遇到不为空的约束失败,可能是由于以下几个原因导致的:

  1. 表单字段未填写:在提交表单时,可能有些字段是必填的,如果这些字段没有填写或者填写的内容为空,就会触发不为空的约束失败。解决方法是确保所有必填字段都被正确填写。
  2. 数据库字段设置不正确:在Django的模型中,每个字段都有默认的约束条件,例如CharField默认是不为空的。如果数据库中的字段设置为不为空,而表单提交时该字段为空,就会触发约束失败。解决方法是检查数据库字段的设置,确保允许为空。
  3. 表单验证失败:Django提供了表单验证机制,可以在表单类中定义验证规则。如果表单提交的数据不符合验证规则,就会触发约束失败。解决方法是检查表单类中的验证规则,确保数据符合要求。
  4. 数据库迁移问题:如果在修改了模型字段的约束条件后没有进行数据库迁移操作,就会导致约束失败。解决方法是运行python manage.py makemigrationspython manage.py migrate命令,将模型的变更同步到数据库。

总结起来,不为空的约束失败可能是由于表单字段未填写、数据库字段设置不正确、表单验证失败或数据库迁移问题所导致的。需要逐一排查以上可能的原因,并进行相应的修正。

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

相关·内容

Django学习之八:forms组件【对

并且包括inline error messages 校验失败的错误可以渲染到表单后,已提示表单提交用户。...关于提交的表单数据的校验,提供了自定义全局和局部钩子,提供了丰富的内置Field类和其对应的widget来约束表单提交的数据。...这种情况通常给用户一个空form后,用户提交,如果无效,再返回一个绑定了数据的form给用户。...但是要注意对应数据库的新增和修改操作,在save时是有不同逻辑的,你自己想想也是,如果是提交的数据和库中存量的数据有约束冲突,那必须解决这个冲突;至于新增就简单了直接插入insert就可以了。...如日期字符串,通过cleaned_data后,得到的是一个datetime.date的对象。 我觉得,在定义form类时,字段赋值的是一个如CharField的对象。这个对象有包含了Widget对象。

2.2K30

一篇文章带你了解Django Form组件(入门篇)

前言 Hey,大家好呀,我是码农,星期八。 本次咱们来get一个新技能,Form组件。 Form组件主要用于验证表单数据。...为什么需要Form组件 注:Form组件,只适用于,前后端未分离的项目中,主要用于验证表单数据,所以,关键字是表单!!! 比如像哔哩哔哩的注册界面。 ?...我点击注册,它不仅仅可以知道我的注册昵称是否存在,密码是否小于6位,手机号格式错误。 还会把错误信息一直留在上面,给我提示。 我们就以这个为雏形,来简单的写一个小小的注册界面。...如果填写的信息错误。 填写信息 ? 错误提示 ? 小总结 但是你发现虽然能把错误信息显示出来。 但是我原来填写的东西没了啊!!!,因为html form表单提交是刷新页面提交的!...同上 如果填写的信息错误。 ? 小总结 这是我点击提交之后报错的结果! 可以发现,即使刷新页面提交,还是会把原来的数据保存下来,并且还有验证失败的信息! Form总结 从上述示例可以发现。

67541
  • 注册

    用户在注册表单里填写注册信息,然后通过表单将这些信息提交给服务器。视图函数从用户提交的数据提取用户的注册信息,然后验证这些数据的合法性。...form = RegisterForm() # 渲染模板 # 如果用户正在访问注册页面,则渲染的是一个空的注册表单 # 如果用户通过表单提交注册信息,但是数据验证不合法...= Form() # 渲染模板 # 如果不是 POST 请求,则渲染的是一个空的表单 # 如果用户通过表单提交数据,但是数据验证不合法,则渲染的是一个带有错误信息的表单...image.png 你可以尝试注册一个用户,或者尝试故意输错一些信息,看看表单渲染的错误信息是什么样的,比如我故意输入两次不同的密码,得到一个错误信息提示: image.png 在 Admin 后台查看用户是否注册成功...如果表单数据没有错误,提交表单后就会跳转到首页,由于我们没有写任何处理首页的视图函数,所以得到一个 404 错误。

    9.1K60

    python-Django-表单验证(一)

    表单验证是Web开发中的一个重要方面,它有助于确保用户输入的数据符合预期并且是安全的。Django表单提供了一种简单而强大的方法来验证用户提交的表单数据。...表单验证还可以确保表单数据是安全的,例如防止SQL注入或跨站点脚本攻击。在Django中,我们可以使用表单类中提供的验证器来验证用户提交的表单数据。...字段验证器Django表单提供了许多内置的字段验证器,我们也可以编写自定义验证器来确保表单数据的正确性。下面是一些常用的内置验证器:required:确保字段不为空。...例如,以下是一个表单类,它定义了一个包含email字段的表单,并使用required和email验证器对该字段进行验证:from django import formsclass ContactForm...,并传递了required=True参数,以确保该字段不为空。

    97941

    登录注册小案例实现(使用Django中的form表单来进行用户输入数据的校验)

    其实,不那样用的最主要的原因是:django中提供了一个form表单的功能,这个表单可以用来验证数据的合法性还可以用来生成HTML代码!!!...(1)纯理论来讲讲form表单: ①form表单的引入: 登录页面和注册页面都会用到form表单来提交数据 当数据提交到后台后,需要在视图函数中去验证数据的合法性. django中提供了一个form表单的功能...,这个表单可以用来验证数据的合法性还可以用来生成HTML代码 所以这个登录注册案例我们就来使用这个django自带的form来生成前端页面以及验证数据. ②关于django form表单的使用: 创建一个...使用is_valid()方法可以验证用户提交的数据是否合法,而且HTML表单元素的name必须和django中的表单的name保持一致,否则匹配不到....}) """" 解释如下注释的原因: 下面这个函数clean()是用于进行数据验证的,本来我想也写在此form表单校验里,但是后面在视图函数里写业务逻辑时发现

    4.4K00

    Django之模板系统

    ,如果它的值是“True”(存在、不为空、且不是boolean类型的false值),对应的内容块会输出。...这个标签的值是个随机字符串,提交的时候,这个东西也被提交了,首先这个东西是我们后端渲染的时候给页面加上的,那么当你通过我给你的form表单提交数据的时候,你带着这个内容我就认识你,不带着,我就禁止你,因为后台我们...django也存着这个东西,和你这个值相同的一个值,可以做对应验证是不是我给你的token,存储这个值的东西我们后面再学,你先知道一下就行了,就像一个我们后台给这个用户的一个通行证,如果你用户没有按照我给你的这个正常的页面来...post提交表单数据,或者说你没有先去请求我这个登陆页面,而是直接模拟请求来提交数据,那么我就能知道,你这个请求是非法的,反爬虫或者恶意攻击我的网站,以后将中间件的时候我们在细说这个东西,但是现在你要明白怎么回事...,明白为什么django会加这一套防御。

    1.3K20

    注册页面表单js验证,手机验证码验证,阻断提交表单的可行性方案(移植性极强)

    简要说明一下: (1)我在form表单头部加了id=“myform”,为了在js中进行阻断提交时获取form (2)在每一个表单后面加了一个span,并给span加了不同的id,为了在阻断提交时获得...成功返回0,失败返回1,在此处代码只要传到后台的phone不为空,肯定获取成功。...1、获取imput中的值,同时获取input后面的span值,只要input有为空的,span有不为空的,就阻断提交。...: (1)只要我们输入表单时离开会离开判断是否符合符合,只要不符合,后面的span就会提示,这样就 span就不为空了,不能提交成功。...只有改正确了对应的span才为空。 (2)当我们不去输入表单时,我们的表单就有空的,也会阻断。 (3)这一前一后的判断,就能保证我们的提交内容符合要求。

    3.5K20

    Django-form表单

    在Django 中构建一个表单 Form 类 我们已经计划好了我们的 HTML 表单应该呈现的样子。在Django 中,我们的起始点是这里: ?...我们必须自己在模板中提供它们。 视图 发送给Django 网站的表单数据通过一个视图处理,一般和发布这个表单的是同一个视图。这允许我们重用一些相同的逻辑。...这是我们在第一个访问该URL 时预期发生的情况。 如果表单的提交使用POST 请求,那么视图将再次创建一个表单实例并使用请求中的数据填充它:form = NameForm(request.POST)。...注:Django 原生支持一个简单易用的跨站请求伪造的防护。当提交一个启用CSRF 防护的POST 表单时,你必须使用上面例子中的csrf_token 模板标签。...当渲染给用户时,它将为空或包含默认的值。 绑定的表单具有提交的数据,因此可以用来检验数据是否合法。如果渲染一个不合法的绑定的表单,它将包含内联的错误信息,告诉用户如何纠正数据。

    3.9K70

    Django 基础快速入门

    创建好项目后可以在所选择的目录下看到一个以项目名作为名称的文件夹: 目录文件介绍 二、创建 app 应用 在 Django 中,创建好一个项目后,我们还需要对项目得创建一个 app,创建 app 在需要在对应的项目目录下...,默认为空值,剩下的其他代码则为正常的 html 表单代码,在此不再赘述。...由于我们使用的 form 表单的 method 为 post,那么在此时就需要对其登录提交做限制,非 post 的请求都将会被限制,所以此时的 login 方法编写如下: def login(request...=True,blank=True) # 有约束 to 是表示要关联哪一个表,to field 那个表的哪个列,此时创建的这个列数据需要存在于那个表的指定列 id 中有值在生成 depart时将会生成 depart_id...表示指向的某一个表的列名 # on_delete 表示在删除对应关联的表内容时,自动删除所关联的对应内容 ,级联删除 # 若想置空不删除对应所关联的内容,需要允许当前列内容为空:null=True ,

    1.7K20

    第 14 篇:交流的桥梁“评论功能”—— HelloDjango 系列教程

    此外,在 博客从“裸奔”到“有皮肤”[3] 中提过,所有模型的字段都接受一个 verbose_name 参数(大部分是第一个位置参数),django 在根据模型的定义自动生成表单时,会使用这个参数的值作为表单字段的...当用户想要发表评论时,他找到我们给他展示的一个评论表单(我们已经看到在文章详情页的底部就有一个评论表单,你将看到表单呈现给我们的样子),然后根据表单的要求填写相应的数据。...我们知道每一个 URL 对应着一个 django 的视图函数,于是 django 调用这个视图函数,我们在视图函数中写上处理用户通过表单提交上来的数据的代码,比如验证数据的合法性并且保存数据到数据库中,...关于表单进一步的解释 django 为什么要给我们提供一个表单类呢?为了便于理解,我们可以把表单和前面讲过的 django ORM 系统做类比。...,而不是一个空的表单了。

    1.7K20

    Django的form,model自定制

    一、Form组件原理: django框架提供了一个form类,来处理web开发中的表单相关事项。...():,K是user,pwd,v是正则表达式 每次循环通过self.fields字典的键, 一个一个的去get前端POST提交的数据 得到用户输入数据;input_value= request.post.get...(一般不使用post_clean做自定义过滤,clean_form方法完全可以解决) form表单提交验证 form表单(会发起 get)提交刷新失去上次内容 from django.shortcuts...把定义的定义的Form类,实例化(obj=Login() )内部调用一个__str__的方法,如果没有传值 返回name='字段名空的input...发送get请求时,服务端渲染到模板(空标签/默认值)发送到客户端显示 (3)客户端填数据,POST提交到后端; (4)后端验证,返回结果给前端;(切记Form组件是在后端生成,发送给客户端显示,客户端填完数据在发回服务端

    2.5K10

    Django的模板系统

    ,如果它的值是"True"(存在,不为空,且不是boolean类型的false值),对应的内容块会输出. {% if num > 100 or num < 0 %} 无效 的值是个随机字符串,提交的时候,这个东西也被提交了,首先这个东西是我们后端渲染的时候给页面加上的,那么当你通过我给你的form表单提交数据的时候,你带着这个内容我就认识你,不带着,我就禁止你,因为后台我们...django也存着这个东西,和你这个值相同的一个值,可以做对应验证是不是我给你的token,存储这个值的东西我们后面再学,你先知道一下就行了,就像一个我们后台给这个用户的一个通行证,如果你用户没有按照我给你的这个正常的页面来...post提交表单数据,或者说你没有先去请求我这个登陆页面,而是直接模拟请求来提交数据,那么我就能知道,你这个请求是非法的,反爬虫或者恶意攻击我的网站,以后将中间件的时候我们在细说这个东西,但是现在你要明白怎么回事...,明白为什么django会加这一套防御。

    1.7K10

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

    我们不想让用户与管理网站交互,因此我 们将使用Django的表单创建工具来创建让用户能够输入数据的页面。 19.1.1 添加新主题 首先来让用户能够添加新主题。...视图函数new_topic() 函数new_topic()需要处理两种情形:刚进入new_topic网页(在这种情况下,它应显示一个 空表单);对提交的表单数据进行处理,并将用户重定向到网页topics...对于只是从服务 器读取数据的页面,使用GET请求;在用户需要通过表单提交信息时,通常使用POST请求。处理 所有表单时,我们都将指定使用POST方法。...如果请求方法不是POST,请求就可能是GET, 因此我们需要返回一个空表单(即便请求是其他类型的,返回一个空表单也不会有任何问题)。...由于实例化TopicForm时我们没有指定任何实参,Django将创建一个可供用户 填写的空表单。 如果请求方法为POST,将执行else代码块,对提交的表单数据进行处理。

    16610

    Django学习笔记之Django Form表单详解

    知识预览 构建一个表单 在Django 中构建一个表单 Django Form 类详解 使用表单模板 回到顶部 构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字。...我们必须自己在模板中提供它们。 视图 发送给Django 网站的表单数据通过一个视图处理,一般和发布这个表单的是同一个视图。这允许我们重用一些相同的逻辑。...这是我们在第一个访问该URL 时预期发生的情况。 如果表单的提交使用POST 请求,那么视图将再次创建一个表单实例并使用请求中的数据填充它:form = NameForm(request.POST)。...注:Django 原生支持一个简单易用的跨站请求伪造的防护。当提交一个启用CSRF 防护的POST 表单时,你必须使用上面例子中的csrf_token 模板标签。...回到顶部 Django Form 类详解 绑定的和未绑定的表单实例 绑定的和未绑定的表单 之间的区别非常重要: 未绑定的表单没有关联的数据。当渲染给用户时,它将为空或包含默认的值。

    4.6K10

    04.Django基础四之模板系统

    ,如果它的值是“True”(存在、不为空、且不是boolean类型的false值),对应的内容块会输出。...这个标签用于跨站请求伪造保护,     在页面的form表单里面(注意是在form表单里面)任何位置写上{% csrf_token %},这个东西模板渲染的时候替换成了,隐藏的,这个标签的值是个随机字符串...,提交的时候,这个东西也被提交了,首先这个东西是我们后端渲染的时候给页面加上的,那么当你通过我给你的form表单提交数据的时候,你带着这个内容我就认识你,不带着,我就禁止你,因为后台我们django也存着这个东西...提交表单数据,或者说你没有先去请求我这个登陆页面,而是直接模拟请求来提交数据,那么我就能知道,你这个请求是非法的,反爬虫或者恶意攻击我的网站,以后将中间件的时候我们在细说这个东西,但是现在你要明白怎么回事...,明白为什么django会加这一套防御。

    2.6K30

    Python3.4 + Django1.7.7 搭建简单的表单并提交

    后面还有一个问题,是我把txt生成了,但是网页没有返回我还不知道,现在怎么直接返回txt并且展示出来txt 的内容,希望大牛不吝赐教 首先有一个问题 django1.7之前,这样用: HttpResponse...#自定义校验规则,该方法在校验时被系统自动调用,次序在“字段约束”之后 def clean_message(self): message = self.cleaned_data...now return HttpResponse(html) def contact_author(request): if request.method == 'POST':#提交请求时才会访问这一段...post任何表单 form = ContactForm()#第一次生成的form里面内容的格式 print (form) print (form.is_valid...()) #“首次访问”和“提交的信息不符合要求”时被调用 return render_to_response('contact_author.html', {'form': form}

    64420

    django 1.8 官方文档翻译: 5-1-1 使用表单

    在一个Web 应用中,‘表单’可能指HTML 、或者生成它的Django 的Form、或者提交时发送的结构化数据、或者这些部分的总和。...当我们实例化表单时,我们可以选择让它为空还是预先填充它,例如使用: 来自一个保存后的模型实例的数据(例如用于编辑的管理表单) 我们从其它地方获得的数据 从前面一个HTML 表单提交过来的数据 最后一种情况最令人关注...表单和跨站请求伪造的防护 Django 原生支持一个简单易用的跨站请求伪造的防护。当提交一个启用CSRF 防护的POST 表单时,你必须使用上面例子中的csrf_token 模板标签。...绑定的和未绑定的表单实例 绑定的和未绑定的表单 之间的区别非常重要: 未绑定的表单没有关联的数据。当渲染给用户时,它将为空或包含默认的值。 绑定的表单具有提交的数据,因此可以用来检验数据是否合法。...字段详解 考虑一个比上面的迷你示例更有用的一个表单,我们可以用它来在一个个人网站上实现“联系我”功能: #forms.py from django import forms class ContactForm

    4.3K20

    Django学习之旅(五)

    1 POST提交表单 Django框架确实强大,其中内嵌的表单帮你处理好很多东西。你会发现用起来十分顺手。接下来我们一起来感受下Django强大之处。...想到了解更多的字段,可以去看下Django源码中django.forms.fields这个文件。 然后label这个有什么用呢?我想卖个关子,等会你就知道了。...2)在视图函数 views.py 中 ? 3)对应的forms.html模版 ? 提交的页面还是本页面,提交方式是POST。 表格后面还有一个{% csrf_token %}的标签。...这是Django提供的防止伪装提交请求的功能。POST方法提交的表格,必须有此标签。 4)在 urls.py 中对应写上这个函数 ?...注意request.FILES 只有在请求方法为POST,并且发送请求的 拥有enctype="multipart/form-data" 属性时,才会包含数据。否则request.FILES 为空。

    67810

    基于Django的电子商务网站开发(连载40)

    最典型的一个例子是在文本框中输入一段JavaScript语句,然后在页面显示时候这个JavaScript语句被激活执行。...4.5 防止SQL注入 在百度百科中是这样定义SQL注入的:“所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。...具体来说,它是利用现有应用程序,将(恶意)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句...' and password='passwordvar',其中usernamevar与passwordvar是通过前端输入的,如果返回的结果不为空,则认为用户合法,否则就认为不合法。...又由于前面是or操作,所以这条SQL语句返回记录是不为空的。

    77830
    领券