如何在这个基于Django类的视图中传回其他上下文变量?

时间:2014-08-13 15:05:45

标签: django django-forms django-views

我有一个基于Django类的表单提交视图,名为myView,如下所示。 此视图将作为URL的一部分提交的参数以及用户填写到表单字段中的数据。当表单提交有效时,一切都很完美。

但是,如果表单字段验证失败,那么我希望这些错误显示在页面上,用户必须重新提交。增加的皱纹是,当发生这种情况时,需要将两个额外的参数(myArg1和myArg2)作为上下文字典的一部分发送。

目前,form_invalid返回super(myView, self).form_invalid(form)。如何将myArg1和myArg2添加到此返回语句中,以使它们处于新重新提交的上下文中?

class myView(FormView, TemplateView):
    template_name = 'myTemplate.html'
    form_class = myForm
    success_url = reverse_lazy("mySuccess")


    def form_valid(self, form):
        BlahBlahBlah


    def form_invalid(self, form):

        myArg1 = "A"
        myArg2 = "B"


        return super(myView, self).form_invalid(form) 
        # I need to send back myArg1 and myArg2 as members of the 
        # context dictionary in the line above. How?

1 个答案:

答案 0 :(得分:2)

我改变了你的代码以遵循python指南(关于命名类等),你需要的是form_invalid方法。 请不要同时使用FormViewTemplateView,没有必要...... FormView就足够了:

class MyView(FormView):
    template_name = 'my_template.html'
    form_class = MyForm
    success_url = reverse_lazy("my-success")


    def form_invalid(self, form):
        return self.render_to_response(self.get_context_data(form=form,myArg1='A',myArg2='B'))