You need to enable JavaScript to run this app. Django两个近似Form表单自定义校验一个生效一个失效原因咨询
优惠活动
大模型
产品
解决方案
定价
更多

Django两个近似Form表单自定义校验一个生效一个失效原因咨询

问题排查结果

核心原因

Django 表单的单字段自定义校验逻辑遵循固定命名约定:校验方法必须命名为 clean_<对应字段名>,框架在执行is_valid()校验时会自动扫描调用符合规则的方法。

  • SignUpForm1的字段名为test_value,对应校验方法clean_test_value符合命名规则,因此校验正常触发
  • SignUpForm2的字段名为name,但校验方法被错误命名为clean_name_value,不符合约定,框架无法识别该方法为name字段的校验逻辑,因此不会执行,导致校验规则不生效

修复方法

只需修改SignUpForm2的校验方法名,使其符合命名规则即可,修改后代码如下:

class SignUpForm2(forms.Form):
    name = forms.CharField(
        label='name',
        max_length=100,
        widget=forms.TextInput(attrs={'class': "input"})
    )

    def clean_name(self):
        data = self.cleaned_data.get('name')
        print(data)
        if data != "abc":
            raise forms.ValidationError("Error")
        return data

内容的提问来源于stack exchange,提问作者jakub_zoitech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 19:06:04