Django表单预览

时间:2010-06-10 19:33:11

标签: django django-forms

我正在尝试使用django的FormPreview,但我无法让它正常工作。这是我的代码:

forms.py

class MyForm(forms.ModelForm):
   status = forms.TypedChoiceField(
                                coerce=int, choices=LIST_STATUS, label="type",
                                widget=forms.RadioSelect
                                )
    description = forms.CharField(widget = forms.Textarea)
    stage = forms.CharField()

    def __init__(self, useradd=None, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['firm'].label = "Firm"
class Meta:
    model = MyModel
    fields =    ['status', 'description', 'stage']


class MyFormPreview(FormPreview):
    form_template = 'templates/post.html'
    preview_template = 'templates/review.html'

    def process_preview(self, request, cleaned_data):
        print "processed"

    def done(self, request, cleaned_data):
        print "done"
        # Do something with the cleaned_data, then redirect
        # to a "success" page.
        return HttpResponseRedirect('/')

urls.py

(r'^post/$', MyFormPreview(MyForm)),

post.html

<form id = "post_ad" action = "" method = "POST" enctype="multipart/form-data">
     <table>
     {{form.as_table}}
     </table>    
 <input type="submit" name="save" value="Post" />
 </form>

当我去/后/我得到正确的表格并填写。当我提交表单时,它会立即返回/发布/但是没有错误(我已尝试显示{{errors}})并且表单为空。我的所有打印语句都没有执行。我不确定我错过了什么。谁能帮我吗?除了django网站上的内容之外,我找不到任何文档。

另外,我应该在我的preview.html模板中使用的“预览”变量是什么? {{preview}}或者我只是再次{{form}}? - 在下面回答。

我尝试在设置中将“django.contrib.formtools”添加到我的installed_apps中,并尝试使用django.contrib中默认表单模板中的代码,如下所示。不过,当我提交表单时,我会回到帖子模板,我的所有打印语句都没有执行:(

2 个答案:

答案 0 :(得分:3)

有关默认模板,请参阅django / contrib / formtools / templates。

答案 1 :(得分:2)

已从1.8以上的Django中删除了Formtools。

现在可以在Github页面访问:Django-Formtools及其相关文档可以在read the docs找到。

sudo pip install django-formtools可以帮助您安装它。

删除已在1.8 release highlights

中公布