python - 联系表格不起作用。/contact/ 处的 IntegrityError
问题描述
模型.py
class ContactForm(models.Model):
name = models.CharField(max_length=50)
subject = models.CharField(max_length=200)
email = models.EmailField()
message = models.TextField()
def __str__(self):
return self.name
视图.py
def contact(request):
if request.method == "POST":
name = request.POST.get('name')
subject = request.POST.get('subject')
email = request.POST.get('email')
message = request.POST.get('message')
ContactForm.objects.create(
name = name,
subject = subject,
email = email,
message = message
)
return render(
request,
'blog/contact.html',
{
'msg':'Details have been saved. We will get back to you.'
}
)
else:
return render(request, 'blog/contact.html')
联系人.html
{% extends 'blog/base.html' %}
{% block content %}
<div class="container wrap mb-5" style="margin-top: 100px">
<h2 class="text">Contact Us</h2>
<form action="{% url 'contact' %}" method="POST">
{% csrf_token %}
<input type="text" placeholder="Enter Your Name" name="name">
<input type="text" placeholder="Subject" name="subject">
<input type="email" placeholder="Enter Your Email" name="email">
<input type="message" placeholder="Write Your Message" name="msg">
<input type="submit" value="Send" name="Submit">
</form>
{% if msg %}
<div class="alert alert-success">
{{ msg }}
</div>
{% endif %}
</div>
{% endblock %}
当我单击提交按钮时发生此错误。
表明IntegrityError at /contact/ NOT NULL constraint failed: blog_contacts.message.
解决方案
我在 html 中看到,对于消息输入,名称标签是“msg”,在视图中它是 request.POST.get('message')。因此它找不到那个 post 变量。也没有像“消息”这样的输入类型,所以你也可以改变它,
该行的代码现在看起来像
<input type="text" placeholder="Write Your Message" name="message">
也不建议使用直接的帖子对象,这会使您面临安全漏洞。在使用用户输入之前,您应该使用 Django 表单来清理数据。查看官方文档以获取更多帮助 https://docs.djangoproject.com/en/3.0/topics/forms/
推荐阅读
- google-apps-script - 从网页直接安装附加组件后,有没有办法向用户显示后续步骤?
- javascript - ReferenceError: document is not defined , nodejs 不理解 DOM
- c++ - c++ 中的 getline() 和 stringstream 错误
- ibm-cloud - 服务“IBM Cloud Activity Tracker with LogDNA”是否需要证书管理器
- python - 使用命令行界面在python中调用可选参数
- azure - 使用 UWP 对 Azure AD 进行身份验证的 MSAL - 需要证书吗?
- python - Pandas 将某些列数据转换为行
- javascript - 如何让我的测试返回错误和查看方法
- wpf - 将 OneWayToSource 与目标的 OneTime 初始化绑定
- php - 如何限制购物车并停留在当前页面?