Django在__init__.py中添加了一个属性类表单

时间:2015-06-15 08:11:34

标签: python django forms django-forms

我的表单类

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中的代码添加属性验证码,但它不在页面上。

我试过了

我的表单类

from django import forms

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

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

2 个答案:

答案 0 :(得分:1)

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

然而,实际上并不是这样做的。相反,您应该使所有表单都从共享父类继承,该父类定义captcha字段。

答案 1 :(得分:0)

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

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

class CaptchaMixin():
    captcha = ReCaptchaField()

class ActualForm(CaptchaMixin, Form):
    pass