forms.Form和forms.ModelForm

  1. forms.ModelForm是forms.Form的升级版

  2. forms.Form验证规则
    2.1 forms.py

    在这里插入图片描述
    在这里插入图片描述
    2.2 view.py 把我们写的UserResetForm导入到view.py 在这里插入图片描述
    2.3 模板
    在这里插入图片描述

  3. forms.ModelForm验证规则
    3.1 models.py
    在这里插入图片描述
    3.2 forms.py就用上面模型类里面的验证规则
    在这里插入图片描述
    3.3 view.py
    在这里插入图片描述
    3.4 模板看你实际的情况

  4. forms.ModelForm远不止你看的这些功能, forms.ModelForm还能自定义匹配规则, 列手机号
    在这里插入图片描述
    记住自定义匹配规则方法都必须以clean_开头

  5. is_valid()验证规则

     (1)首先is_valid()起手,看seld.errors中是否值,只要有值就是flase
     (2)接着分析errors.里面判断_errors是都为空,如果为空返回self.full_clean(),否则返回self._errors
     (3)现在就要看full_clean(),是何方神圣了,里面设置_errors和cleaned_data这两个字典,一个存错误字段,一个存储正确字段。
     (4)在full_clean最后有一句self._clean_fields(),表示校验字段
     (5)在_clean_fields函数中开始循环校验每个字段,真正校验字段的是field.clean(value),怎么校验的不管
     (6)在_clean_fields中可以看到,会将字段分别添加到_errors和cleaned_data这两个字典中
     (7)结尾部分还设置了钩子,找clean_XX形式的,有就执行。执行错误信息也会添加到_errors中
     (8)整个校验过程完成 
    
  6. is_valid()在验证数据时判断多个字段不能同时相同

     列子:
     有6个input框, 下面的1, 2, 3, 4, 5, 6依次在这6个框中
     
     意思就是当你第一次提交的数据是1,2,3,4,5,6
     你第二次不能提交1,2,3,4,5,6这样会报错,因为
     你这次提交的数据跟上次提交的数据相同,你要是提
     交7,8,1,2,3,4都会提交上去,因为你有部分数据不
     同.
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Django开发中,当出现"AttributeError: module 'django.forms.forms' has no attribute 'ModelForm'"的错误时,这通常是由于导入模块错误或版本不兼容引起的。 解决该问题的方法如下: 1. 首先,确保你正在使用的是正确的模块导入语句。在这种情况下,检查你的代码中是否正确导入了"django.forms"模块,并且使用了正确的语法来创建ModelForm。可以使用如下语句导入ModelForm: ```python from django import forms from django.forms import ModelForm ``` 2. 如果你确认导入语句正确无误,那么可能是由于Django的版本不兼容造成的。请确保你正在使用的Django版本支持ModelForm。在Django版本1.8及以上,ModelForm是内置的,所以你可以直接导入并使用它。但如果你使用的是旧版本的Django,你可能需要使用旧版的Form类来代替ModelForm,并手动定义表单字段。 ```python from django import forms class MyForm(forms.Form): # 在这里定义你的表单字段 ``` 3. 最后,如果上述方法都没有解决问题,那么可能是由于其他库或模块的冲突导致的。你可以尝试更新或重新安装相关的库,特别是与Django相关的库,以确保版本兼容性。 总结起来,当出现"AttributeError: module 'django.forms.forms' has no attribute 'ModelForm'"错误时,你可以检查导入语句、Django版本和相关库的兼容性,以及是否正确使用了ModelForm的语法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Django开发示例配置及系列常见错误,如:AttributeError: module 'django.core.serializers.json' has no ...](https://blog.csdn.net/u014374009/article/details/105986631)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [AttributeError: module 'tensorflow.compat.v1' has no attribute '](https://download.csdn.net/download/qq_38766019/86272235)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只因为你温柔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值