django联系表单数据未保存

fnvucqvd  于 2023-05-01  发布在  Go
关注(0)|答案(1)|浏览(130)

我正在为我的兄弟建立一个网站,它需要一个联系表格,HTML模板有一个预先建立,所以我自定义建立一个模型的基础上,什么是包括在模板中的形式,到目前为止,这一切都工作,除了当你按下提交网站上的数据不保存到数据库中,并在管理员不可见。
但模板呈现出所有罚款和页面重定向时,你按下提交,它也不会允许你提交,如果所需的字段不在那里或包含无效的条目。
我得到这个在终端'“POST / HTTP/1.1”200 15649'
所以它看起来像一个成功的帖子请求,但数据库中没有任何东西?我错过了什么?
index.html

<form id="contact" action="" method="post">
                      {% csrf_token %}
                      {{ form.as_p }}
                      
                        <div class="row">
                          <div class="col-md-12">
                            <h2>Contact me</h2>
                          </div>
                          <div class="col-md-6">
                            <fieldset>
                              <input name="name" type="text" class="form-control" id="name" placeholder="Your name..." required="">
                            </fieldset>
                          </div>
                          <div class="col-md-6">
                            <fieldset>
                              <input name="email" type="text" class="form-control" id="email" placeholder="Your email..." required="">
                            </fieldset>
                          </div>
                          <div class="col-md-12">
                            <fieldset>
                              <textarea name="message" rows="6" class="form-control" id="message" placeholder="Your message..." required=""></textarea>
                            </fieldset>
                          </div>
                          <div class="col-md-12">
                            <fieldset>
                              <button type="submit" id="form-submit" class="button">Send Now</button>
                            </fieldset>
                        </div>
                    </form>

forms.py

from django import forms
from .models import Contact

class ContactForm(forms.ModelForm):
    
    class Meta:

        model = Contact
        fields = ['name', 'email', 'message']

views.py

from django.shortcuts import render
from .forms import ContactForm

# Create your views here.
def home(request):
    return render(request, 'rattlesnake/index.html')


def contactView(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            form.save()
            
    else:
        form = ContactForm()    
    return render(request, 'rattlesnake/index.html', {'form':form})

models.py

from django.db import models

class Contact(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField()
    message = models.TextField() 

    def __str__(self):
        return self.name

urls.py

from django.urls import path
from . import views


urlpatterns = [
    path('', views.home, name='home'),
    path('contact/', views.contactView, name='contact'),
]
pkbketx9

pkbketx91#

您正在获取200,但数据未保存。我认为在你看来,形式是无效的,这是没有处理的。

def contactView(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            form.save()
        # else <- should be handled and debugged.
            
    else:
        form = ContactForm()    
    return render(request, 'rattlesnake/index.html', {'form':form})

添加一些日志记录器并处理View代码的else情况可以为您提供更多关于表单中哪些内容不起作用的信息。
希望这有帮助!

相关问题