python - IntegrityError a NOT NULL 约束失败:通过 django 提交表单
问题描述
我想POST REQUEST
用现有的HTML FORM
, 将其存储在数据库中,但每次我尝试通过表单提交数据时,都会出现以下错误
顺便说一句,我在这些帖子之后这样做:
MultiValueDictKeyError 在登录页面上的 POST 请求后在 Django 中生成
注册.html
{% extends "RegistrarProyecto/layout.html" %}
{% block title %} {% endblock %}
{% block content %}
<h1>Crear Usuario</h1>
<form class="CrearUsuario" action="{% url 'registro' %}" method="POST">
{% csrf_token %}
<input type="text",name="NombreProyecto", placeholder="Nombre del Proyecto" >
<br>
<br>
<input type ="text", name="ResponsableProyecto", placeholder ="Responsable del proyecto">
<br>
<br>
<textarea name="DescripcionProyecto", rows="4", cols="50"></textarea>
<br>
<br>
<input type="submit" value="Registrar">
</form>
<br>
<a href="{% url 'index' %}">Ir a Bienvenido</a>
{% endblock %}
视图.py
def registro(request):
if request.method == 'POST':
NombreProyecto = request.POST.get('NombreProyecto')
ResponsableProyecto = request.POST.get('ResponsableProyecto')
DescripcionProyecto = request.POST.get('DescripcionProyecto')
Proyecto.objects.create(NombreProyecto=NombreProyecto,ResponsableProyecto=ResponsableProyecto,DescripcionProyecto=DescripcionProyecto)
return redirect("RegistrarProyecto/index.html")
return render(request, 'RegistrarProyecto/Registro.html')
模型.py
from django.db import models
# Create your models here.
class Proyecto(models.Model):
NombreProyecto = models.CharField(max_length = 64)
ResponsableProyecto = models.CharField(max_length= 64)
DescripcionProyecto = models.CharField(max_length = 64)
def __str__(self):
return f"{self.NombreProyecto}"
class Evaluador(models.Model):
NombreEvaluador = models.CharField(max_length=64)
Proyecto = models.ManyToManyField(Proyecto, blank=True, related_name="Evaluador")
def __str__(self):
return f"{self.NombreEvaluador} {self.Proyecto}"
网址.py
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
path("Registro", views.registro, name="registro")
]
解决方案
就是这一行:
<input type="text",name="NombreProyecto", placeholder="Nombre del Proyecto" >
将其更改为:
<input type="text", name="NombreProyecto", placeholder="Nombre del Proyecto" >
推荐阅读
- ansible - 如何使用 ansible yum 模块一次性安装多个组?
- javascript - Angular 6,而我试图在 2 个单独的画布元素上渲染相同的图像
- ios - 使用 ARKit 的面部和相机之间的距离
- angular - 我无法像以前一样更新我的商店(将 rxjs 更新到 v.6 和 angularfire 到 v.5)
- python - Python 等效于 MATLAB 函数 findchangepts
- python - 从单个 .cpp 构建共享对象
- jquery - Github vs Browsersync 显示错误
- android - 如何从动态创建的视图中从 EditText 获取文本
- swift - 格式化货币 - 删除小数
- javascript - Angular 2上传解析CSV