首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在验证views.py

正在验证views.py
EN

Stack Overflow用户
提问于 2021-02-02 02:21:52
回答 2查看 43关注 0票数 0

有人能建议我如何防止‘张贴’空表单吗?我想我错过了:如果form.is_valid()..。但是我太新手了,不知道在哪里实现它……

代码语言:javascript
复制
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:

代码语言:javascript
复制
from django.forms import ModelForm
from .models import Contact

class ContactForm(ModelForm):
    class Meta:
        model = Contact
        fields = '__all__'

models.py:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2021-02-02 02:25:25

你走在了正确的道路上。

如果您将if form.is_valid():放入if request.method == 'POST'

那么它应该能做你想要的事情。

所以这应该是代码:

代码语言:javascript
复制
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()来传递数据。

示例:

代码语言:javascript
复制
def getData(request):    
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            form.save()
            data = form.cleaned_data.get('dataField')
票数 1
EN

Stack Overflow用户

发布于 2021-02-02 02:43:18

另一种方法是在HTML输入上添加一个required属性,但这并不是每次都有帮助,因为用户只需将其从Inspect选项卡中删除并提交一个空的表单LOL即可。只需使用form.is_valid或仅尝试使用以下命令检查字段是否为空:

代码语言:javascript
复制
if full_name == null OR relationship == null OR email == null OR phone_number == null OR address == null:
    #Some Return an error statement

希望能有所帮助!(:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65998091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档