Django 在 __init__.py 中添加属性 class 形式

Django add an attribute class form in __init__.py

我的表格class

from django import forms

class Form(forms.Form):
    your_name = forms.CharField(label='Your name ', max_length=100)

我的应用文件__init__.py

from django import forms
from my_app.forms import Form
from captcha.fields import ReCaptchaField

def register(form):
 form.captcha=CaptchaField()

register(Form)

__init__.py中的代码添加了一个属性验证码,但它不在页面上。

我试过了

我的表格class

from django import forms

class Form(forms.Form):
    your_name = forms.CharField(label='Your name ', max_length=100)
    captcha=CaptchaField()

它有效,但我有一个不同的!我想添加一个 сaptcha 多种形式。 我想在不更改 classes 形式的情况下添加验证码。我想在初始化期间更改 classes 的形式。 怎么做???

您需要将字段分配给 form.fields,而不仅仅是 form

然而,这并不是真正的方法。相反,您应该使所有表单都继承自共享父项 class,它定义了 captcha 字段。

从评论继续,让基础 class 继承自 django.forms.Form,并为所有您想要 captcha 字段的表单子class;

from captcha.fields import ReCaptchaField
from django.forms import Form

class CaptchaMixin():
    captcha = ReCaptchaField()

class ActualForm(CaptchaMixin, Form):
    pass