验证视图.py



有人能告诉我如何防止'POST'空表单吗?我想我错过了:如果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

你做对了。

如果你把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')
编辑:

在请求中包含else也是很好的做法。方法if语句。

另一个好的做法是使用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')

另一种方法是在HTML输入中添加必需的属性,但这可能不是每次都有用,因为用户可以从Inspect选项卡中删除它并提交一个空表单LOL。用表格就行了。Is_valid或只是尝试检查字段是否为空:

if full_name == null OR relationship == null OR email == null OR phone_number == null OR address == null:
#Some Return an error statement

希望有帮助!(:

最新更新