我是Django(1.5)的新手,我正在尝试做一个基本的POST表单。我有TemplateView
来实现表单(使用get_context_data
传递给模板。)
当表单由于某种原因(例如验证错误)失败时,我想再次显示表单,其中包含用户填写的数据。成功后,我想重定向到成功页面(例如刚刚创建的项目)。
这是我到目前为止所做的:
class WriteForm(forms.Form):
subject = forms.CharField()
text = forms.CharField(widget=forms.Textarea)
# some other stuff
class WriteView(MailboxView):
# MailboxView extends TemplateView and defines some context
template_name = 'messages/write.html'
form_data = None
def post(self, request, *args, **kwargs):
# treat form data...
# lets make things simple and just assume the form fails
# I want to do something like that:
self.form_data = request.POST
# should I return something?
def get_context_data(self, **kwargs):
context = super(WriteView, self).get_context_data(**kwargs)
if self.form_data is None:
context['form'] = WriteForm()
else:
context['form'] = WriteForm(self.form_data)
return context
提前致谢!
答案 0 :(得分:0)
Django已经拥有了你可以使用的FormView
。如果你想看看它是如何工作的,这里是code on GitHub。
如果你想编写自己的视图而不是使用内置的表单视图,你可能会发现查看Django Vanilla Views中的FormView
很有用,它有一个更简单的实现。