hek*_*ran 6 django django-forms
Django的表单库具有表单集功能,允许您处理动态添加的表单.例如,如果您的应用程序具有书签列表,您可以使用表单集来处理表单集,以处理多个表单,每个表单都代表一个书签.
如果要动态地向表单添加字段,该怎么办?一个示例是调查创建页面,您可以在其中动态添加无限数量的问题.你如何在Django中处理这个问题?
看看Django最初的创始人之一Jacob Kaplan-Moss最近发表的这篇文章:"动态表格生成".它使用一个示例逐步向您显示该过程.好读.
Django的发布经理James Bennett还发表了一篇2008年的文章.
要添加,删除和更改Form或ModelForm上的字段,只需覆盖__init__()如下:
class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
user = kwargs.pop('user')
other_stuff = kwargs.pop('stuff')
super(MyForm, self).__init__(*args, **kwargs)
self.fields['my_dynamic_field'] = forms.Field(...)
# Add fields based on user or other_stuff
Run Code Online (Sandbox Code Playgroud)
并像这样使用它: form = MyForm(user = user, stuff = stuff)
在python中,您可以动态地实例化一个类.knutin展示了动态自定义表单并添加几个字段的好例子.
您也可以动态创建整个表单,如James Bennett给出的示例所示:
def make_contact_form(user):
fields = { 'name': forms.CharField(max_length=50),
'email': forms.EmailField(),
'message': forms.CharField(widget=forms.Textarea) }
if not user.is_authenticated():
fields['captcha'] = CaptchaField()
return type('ContactForm', (forms.BaseForm,), { 'base_fields': fields })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8103 次 |
| 最近记录: |