ModelForm验证笔记

本文深入探讨了Django中的Form验证机制,包括如何使用ModelForm进行数据验证及保存,以及解决RuntimeError错误的方法。同时,文章还介绍了三种AJAX实现方式,并详细讲解了验证码生成的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Form验证
    UserInfoForm  --> Form -->BaseForm(is_valid...)

    UserInfoModelForm -->ModelForm -->BaseModelForm -->BaseForm(is_valid...)



提交表单报错:RuntimeError: You called this URL via POST, but the URL doesn’t end in a slash and you have APPEND_SLASH set.
解决方法:
RuntimeError: You called this URL via POST, but the URL doesn’t end in a slash and you have APPEND_SLASH set.
提示form的action地址最后不是/结尾的,而且APPEND_SLASH的值是Ture

from的action地址改为/结尾的就可以了
或者
修改settings:APPEND_SLASH=False


ModelForm
1.生成HTML标签:class Meta:....
2.mf=xxxModelForm(instance=ModelObj)
3.额外的标签is_rmb=field.CharField(widget=fwidget.CheckboxInput())
4.各种验证 is_valid()  ->各种沟子
5.mf.save()
    拆开:instance=mf.save(False)
            instance.save() 保存当前对象
            mf.save_m2m()  保存多地多


三种AJAX:
    原生
    jQuery
    AJAX操作


    使用场景:
            如果发送的是普通的数据:jQuery,XMLHttpRequest,iframe
            如果发送的是文件:iframe,jQuery(FormData),XMLHttpRequest(FormData),


验证码
     1.创建一张图片 pip install Pillow
     2.在图片中写入随机字符串
     3.将图片写入到指定文件
     4.打开指定目录文件,读取内容
     5.返回给用户 HttpResponse(data)

 

转载于:https://www.cnblogs.com/leiwenbin627/p/11123835.html

Django中的ModelForm可以方便地创建表单,同时也可以对表单进行验证。以下是一些常见的ModelForm验证方式: 1. 必填字段验证 使用required=True参数可以指定一个字段为必填项,如果该字段为空,则会抛出ValidationError异常。 例如: ```python class MyForm(forms.ModelForm): class Meta: model = MyModel fields = ['name', 'age'] name = forms.CharField(required=True) age = forms.IntegerField(required=True) ``` 2. 字段类型验证 使用cleaned_data获取表单数据,并使用isinstance函数对字段类型进行验证。 例如: ```python class MyForm(forms.ModelForm): class Meta: model = MyModel fields = ['name', 'age'] name = forms.CharField(required=True) age = forms.IntegerField(required=True) def clean_age(self): age = self.cleaned_data.get('age') if not isinstance(age, int): raise forms.ValidationError('年龄必须是整数') return age ``` 3. 自定义验证 可以通过自定义clean_<字段名>函数来进行字段的自定义验证。如果该函数返回一个值,则会将该值作为字段的值,否则将抛出ValidationError异常。 例如: ```python from django.core.exceptions import ValidationError class MyForm(forms.ModelForm): class Meta: model = MyModel fields = ['name', 'age'] name = forms.CharField(required=True) age = forms.IntegerField(required=True) def clean(self): cleaned_data = super().clean() name = cleaned_data.get('name') age = cleaned_data.get('age') if name and age and name == '张三' and age < 18: raise ValidationError('未满18岁的张三不允许注册') ``` 以上是一些常见的ModelForm验证方式,可以根据实际需求进行使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值