首页
学习
活动
专区
工具
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总结 从上述示例可以发现。

66541
  • 注册

    用户注册表单里填写注册信息,然后通过表单将这些信息提交给服务器。视图函数从用户提交数据提取用户注册信息,然后验证这些数据合法性。...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参数,以确保该字段不为

    97741

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

    其实,不那样用最主要原因是: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模板系统

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

    1.7K10

    Djangoform,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

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

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

    16110

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

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

    4.6K10

    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}

    64020

    04.Django基础四之模板系统

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

    2.5K30

    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.2K20

    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语句返回记录是不为

    77330
    领券