我正在尝试使用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中默认表单模板中的代码,如下所示。不过,当我提交表单时,我会回到帖子模板,我的所有打印语句都没有执行:(
答案 0 :(得分:3)
有关默认模板,请参阅django / contrib / formtools / templates。
答案 1 :(得分:2)
已从1.8以上的Django中删除了Formtools。
现在可以在Github页面访问:Django-Formtools及其相关文档可以在read the docs找到。
sudo pip install django-formtools
可以帮助您安装它。