联系方式不起作用。完整性错误at/触点/

2024-04-27 02:23:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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.


Tags: namemessageinputgetmodelsemailrequesthtml
1条回答
网友
1楼 · 发布于 2024-04-27 02:23:06

我在html中看到,对于消息输入,name标记是'msg',在视图中是request.POST.get('message')。因此,它找不到post变量。此外,没有“message”这样的输入类型,因此您也可以更改它,
该行的代码现在如下所示

<input type="text" placeholder="Write Your Message" name="message">

另外,不建议使用直柱对象,这样会使您面临安全漏洞。在使用用户输入之前,应该使用Django表单清理数据。查看官方文档以获取更多帮助 https://docs.djangoproject.com/en/3.0/topics/forms/

相关问题 更多 >