Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django中的动态形式_Django_Django Forms - Fatal编程技术网

django中的动态形式

django中的动态形式,django,django-forms,Django,Django Forms,我已经建立了自己的动态形式,有点像詹姆斯·本内特的例子。 在forms.py中使用以下行 def make_question_form(request): fields = { 'venue' : forms.CharField(widget=forms.HiddenInput()), 'survey' : forms.CharField(widget=forms.HiddenInput())} return type('Question_Form',(forms.Base

我已经建立了自己的动态形式,有点像詹姆斯·本内特的例子。 在forms.py中使用以下行

def make_question_form(request):
fields = { 'venue' : forms.CharField(widget=forms.HiddenInput()),
           'survey' : forms.CharField(widget=forms.HiddenInput())}
return type('Question_Form',(forms.BaseForm,), { 'base_fields': fields })
以下是构建它的视图(我知道它不是真正动态的,我计划下一步添加动态

question_form = make_question_form(request)
question_form.base_fields['venue'] = this_venue.name
question_form.base_fields['survey'] = this_survey.name
return render_to_response("survey/questions.html", locals(), context_instance=RequestContext(request))
但我不确定在模板中如何处理它,这是教程中没有真正涉及的部分

我已经计算出以下方法是有效的

    {% for base_field in question_form.base_fields %}
        {{ base_field.type }}
    {% endfor %}
但我认为把它作为一种形式来构建的目的是能够做一些类似的事情

question_form.as_p 
用我自己的表单标签包起来


我是否错过了要点,或者应该这样做(它没有)。

您没有在视图中实例化表单。
make\u question\u form
返回一个新的表单类-通常当您在视图中使用表单类时,您会执行
form=MyFormClass()
form=MyFormClass(request.POST)


所以你需要在
呈现给{u-to-u-response
之前执行
form=question\u-form()
,然后你就可以在模板中执行
{form.as\p}

那么我认为这个过程类似于form=make\u-question\u-form()form.fields['blah']=#获取字段,标记它们,然后使用{{form.as_p}}在模板中?我会赶紧去试试。我会投票给你,因为我想我已经知道你在告诉我什么。稍后会发布一些代码,以防有人发现它有用