在 Django 中,clean()
方法用于执行表单的验证逻辑。如果你需要在子窗体或继承的窗体中重写父窗体的 clean()
方法,可以按照以下步骤进行:
clean()
方法,可以避免重复编写相同的验证逻辑。clean()
方法。clean()
方法来实现。假设我们有一个父窗体 ParentForm
,其中包含一些基本的验证逻辑:
from django import forms
class ParentForm(forms.Form):
name = forms.CharField(max_length=100)
age = forms.IntegerField()
def clean(self):
cleaned_data = super().clean()
name = cleaned_data.get('name')
age = cleaned_data.get('age')
if name and age:
if len(name) < 3:
self.add_error('name', 'Name must be at least 3 characters long.')
if age < 0:
self.add_error('age', 'Age cannot be negative.')
return cleaned_data
现在,我们创建一个子窗体 ChildForm
,继承自 ParentForm
,并重写 clean()
方法以添加额外的验证逻辑:
class ChildForm(ParentForm):
email = forms.EmailField()
def clean(self):
cleaned_data = super().clean()
email = cleaned_data.get('email')
if email:
if not email.endswith('@example.com'):
self.add_error('email', 'Email must be from example.com domain.')
return cleaned_data
super().clean()
获取父窗体的清理结果,然后在子窗体中添加或修改验证逻辑。通过继承和重写 clean()
方法,可以实现灵活且模块化的表单验证逻辑。在子窗体中,首先调用父窗体的 clean()
方法获取清理后的数据,然后根据需要进行额外的验证。
希望这些信息对你有所帮助!如果有更多具体的问题或需要进一步的示例代码,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云