我正在为我的兄弟建立一个网站,它需要一个联系表格,HTML 模板已经预先构建了一个,所以我根据模板中包含的内容自定义构建一个模型表格,到目前为止一切正常,除非您按下提交在网站上,数据未保存到数据库中,也无法在管理员中查看。
但是模板渲染一切正常,当您按下提交时页面重定向,如果所需字段不存在或包含无效条目,它也不会允许您提交。
我在终端得到这个'“POST/HTTP/1.1”200 15649'
所以它看起来像一个成功的 post 请求,但数据库中没有任何内容?我在这里错过了什么?
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>
表格.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})
模型.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'),
]