有人能建议我如何防止‘张贴’空表单吗?我想我错过了:如果form.is_valid()..。但是我太新手了,不知道在哪里实现它……
def addContact(request):
form = ContactForm()
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
# form = Contact(
# full_name = request.POST ('fullname'),
# relationship = request.POST ('relationship'),
# email = request.POST ('email'),
# phone_number = request.POST ('phone-number'),
# address = request.POST ('address'),
# )
form.save()
return redirect('/contact')
context = {'form': form}
return render(request, 'contact/new.html', context)
def contactProfile(request,pk):
contact = Contact.objects.get(id=pk)
return render(request, 'contact/contact-profile.html', {'contact': contact})forms.py:
from django.forms import ModelForm
from .models import Contact
class ContactForm(ModelForm):
class Meta:
model = Contact
fields = '__all__'models.py:
from django.db import models
# Create your models here.
class Contact(models.Model):
full_name = models.CharField(max_length=500)
relationship = models.CharField(max_length=50)
email = models.EmailField(max_length=254)
phone_number =models.CharField(max_length=20)
address = models.CharField(max_length=100)
def __str__(self):
return self.full_name发布于 2021-02-02 02:25:25
你走在了正确的道路上。
如果您将if form.is_valid():放入if request.method == 'POST'中
那么它应该能做你想要的事情。
所以这应该是代码:
def addContact(request):
if request.method == 'POST':
form = MyForm(request.POST) # Edit made here, you need to define the form you are using from your forms.py
if form.is_valid():
new_contact = Contact(
full_name = request.POST ['fullname'],
relationship = request.POST ['relationship'],
email = request.POST ['email'],
phone_number = request.POST ['phone-number'],
address = request.POST ['address'],
)
new_contact.save()
return redirect('/contact')
return render(request, 'contact/new.html')编辑:
在request.method if语句中包含else也是一种很好的做法。
另一个好的实践是使用form.cleaned_data.get()来传递数据。
示例:
def getData(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
form.save()
data = form.cleaned_data.get('dataField')发布于 2021-02-02 02:43:18
另一种方法是在HTML输入上添加一个required属性,但这并不是每次都有帮助,因为用户只需将其从Inspect选项卡中删除并提交一个空的表单LOL即可。只需使用form.is_valid或仅尝试使用以下命令检查字段是否为空:
if full_name == null OR relationship == null OR email == null OR phone_number == null OR address == null:
#Some Return an error statement希望能有所帮助!(:
https://stackoverflow.com/questions/65998091
复制相似问题