Models.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
views.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')
contact.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 %}
This单击提交按钮时发生错误
它显示IntegrityError at /contact/ NOT NULL constraint failed: blog_contacts.message.
我在html中看到,对于消息输入,name标记是'msg',在视图中是request.POST.get('message')。因此,它找不到post变量。此外,没有“message”这样的输入类型,因此您也可以更改它,
该行的代码现在如下所示
另外,不建议使用直柱对象,这样会使您面临安全漏洞。在使用用户输入之前,应该使用Django表单清理数据。查看官方文档以获取更多帮助 https://docs.djangoproject.com/en/3.0/topics/forms/
相关问题 更多 >
编程相关推荐