gpt4 book ai didi

python - 使 Django forms.py 变干的好习惯

转载 作者:太空宇宙 更新时间:2023-11-03 15:13:31 25 4
gpt4 key购买 nike

我有一个关于如何使我的 forms.py 变干的想法,但由于我以前从未在其他地方看到过它,所以我在质疑自己。

整个目的是在不同的表单中重复使用表单域。

这是我想做的:

文件:form_fields.py

EMAIL_FIELD = forms.EmailField(
label="Adresse e-mail",
widget=forms.TextInput(),
error_messages=DICT_ERROR)

PASSWORD_FIELD = ...

文件:forms.py

class SignupForm(forms.Form):
email = EMAIL_FIELD
pwd = PASSWORD_FIELD
... etc.

class SigninForm(forms.Form):
email = EMAIL_FIELD
pwd = PASSWORD_FIELD

你还好吗?如果不是,您有什么建议来制作一个良好的 forms.py 文件“架构”,在我的情况下它可以增长很多?

此外,我问自己是否应该只为具有相同特征(例如名字和姓氏)的字段创建 1 个字段变量。在那种情况下,您如何处理不同的标签?

谢谢。

最佳答案

user2032220 的回答很好。此外,不要使用 EMAIL_FIELD,最好扩展 forms.EmailField 类并为类应用您自己的默认值:

class EmailField(forms.EmailField):
"""Your custom EmailField with best set of default kwargs"""
def __init__(self, *args, **kwargs):
kwargs.setdefault('label', 'Adresse e-mail')
kwargs.setdefault('widget', forms.TextInput())
kwargs.setdefault('error_messages', DICT_ERROR)
return super(EmailField, self).__init__(*args, **kwargs)


class BaseForm(forms.Form):
email = EmailField()
password = forms.CharField()

class Meta:
abstract=True

##Inherit BaseForm
class SignUpForm(BaseForm):
## Other attributes

class ContactForm(forms.Form):
# Easy way of changing just one parameter
email = EmailField(label='Your email')

关于python - 使 Django forms.py 变干的好习惯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23868903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com