Django表单(pig)

1.表单绑定

django为继承自Form类的表单维护了一个绑定状态(bound):

如果一个表单对象在实例化后被赋予过数据内容,则称该表单处于bound状态;已经处于bound状态的表单不能再python代码中修改其数据,而只能由网页用户在页面中输入数据进行修改!

2.表单数据验证

字段属性验证:验证表单中的字段是否满足特定的格式要求,比如Charfield字段是否有max_length属性


from django.shortcuts import render
from form import xxxForm
def test(request):
    if request.method == 'POST':
        form = xxxForm(request.POST)
        if form.is_valid():
            #添加正常业务处理代码,处理完成后可以重定向redirect页面或者直接渲染
        else:
            #添加提交数据不完成的处理代码,比如显示特定错误等
            
            #render渲染界面
            
#字段属性验证一般通过model中字段约束完成,在form渲染时django会自己根据约束要求进行验证
开发者可以用is_valid函数在代码中获得表单验证是否通过的信息:

 

自定义逻辑验证:开发者自定义的一些逻辑要求验证

from django.forms import ModelForm, ValidationError
from models import Moment

class MomentForm(ModelForm):
    class Meta:
        model  = Moment
        fields = '__all__'

    def clean(self):
        clean_data = super(MomentForm, self).clean()
        content = clean_data.get('content')

        if content is None:
            raise ValidationError("请输入Content内容")
        elif content.find('ABCD') >= 0:
            raise ValidationError("不能输入ABCD敏感词汇!")

        return clean_data

#判定自定义复杂逻辑,重载Form子类的clean函数

3.检查变更字段

django提供has_changed函数判断用户是否修改表单数据:

def view_test(request):
    data = {'content':'input it',
            'user_name':'hah',
            'kind':'aaa'
        
            }

    objForm = MomentForm(request.POST, initial=data)
    if f.has_changed():
        print("下面的字段都改了啊")
        for index in f.changed_data:
            print(index)


#request.POST:django从中解析出的用户的输入数据
#initial:Form的初始值,调用has_changed函数时,django用initial的值与初始值相比较,有变化返回True
#changed_data属性是一个修改字段名的列表

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值