python - 如何在不使用表单的情况下通过 django 中的 html 模板将数据发布到数据库中
问题描述
我想通过 html 模板将数据发布到数据库中,并将渲染模板成功插入到您的数据库中。但显示错误
TypeError at /empdetails
'QueryDict' object is not callable
这是我的代码 models.py
class Employee(models.Model):
eno=models.IntegerField(null=True)
ename=models.CharField(max_length=20)
eadd=models.CharField(max_length=20)
和views.py
def Empdetails(request):
num=request.POST('eno')
nam=request.POST('ename')
add=request.POST('eadd')
details=Employee(eno=num,ename=nam,eadd=add)
details.save()
return render(request,'emp.html')
和模板emp.html
<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/templates/inserted.html" method="post">
<label for="eno">Eid :</label>
<input type="text" name=" " value="" placeholder="eid" id="eno">
<label for="nam">Ename</label>
<input type="text" name=" " value="" placeholder="name" id="nam">
<label for="add">Eadd</label>
<input type="text" name=" " value="" placeholder="add" id="add">
<input type="submit" value="submit">
</form>
</body>
</html>
解决方案
尝试打印/记录您的request.POST
对象的内容 - 您是否以您认为发送它们的名称发送数据?您的表单具有名称为ex.reddy
,name
和add
- 但您的视图正在寻找名称为eno
,ename
和的 POST 变量eadd
。
的默认行为.get
是在对象中不存在提供的密钥时返回None
,因此如果您实际上没有发送eno
密钥,那么request.POST.get('eno')
将是None
.
也就是说,IntegrityError
当您尝试将空值保存到带有null=True
. 您可能有任何未应用的迁移吗?
编辑:解决您的编辑问题,querydict is not callable
意味着您正在尝试像函数一样使用字典。request.POST('thing')
不能工作 - 它应该是request.POST['thing']
你以前的 .get 语法。
编辑:解决您的其他编辑,您的 HTML 表单字段的名称现在都是空白的。name
您应该使用要在其下发送字段值的 s 来命名这些表单字段。
推荐阅读
- python-3.x - 从python中混合整数和字符串的未索引列中查找最大值
- c# - Kofax 服务器抛出错误“VRS 失败,错误 -136”
- python - 接受一个序列以及您需要找到的值,并返回一个恰好三个电阻的序列,总和为所需的值 R
- openssl - 获取 OpenSSL RSA 公钥的指纹
- regex - perl - 与正则表达式之间的范围
- docker - Symfony 在 kubernetes 上部署 - 环境问题
- python - 我在 pandas 中创建数据框时遇到了困难,该数据框取自特定的 url。有人可以照顾这个吗?
- javascript - firestore 数据库侦听器停止侦听/角度/RxJS
- javascript - 带有 null 关键字的内爆数组
- java - 在 AWS EC2 Ubuntu 18 64 位上安装 JDK 和 Maven 3.6.0