我正在为我的兄弟建立一个网站,它需要一个联系表格,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'),
]
1条答案
按热度按时间pkbketx91#
您正在获取
200
,但数据未保存。我认为在你看来,形式是无效的,这是没有处理的。添加一些日志记录器并处理View代码的
else
情况可以为您提供更多关于表单中哪些内容不起作用的信息。希望这有帮助!