【发布时间】:2015-05-08 17:37:37
【问题描述】:
这是一个类(在 Django 1.7.4 中)我不明白...在form_valid() 函数中:
class ImportCsv(FormView):
template_name = "backend/import.html"
form_class = UploadFileForm
success_url = reverse_lazy("b_import_csv")
csverrors = []
def get_context_data(self, **kwargs):
ctx = super(ImportCsv, self).get_context_data(**kwargs)
ctx.update({
"csverrors" : self.csverrors,
})
return ctx
def form_valid(self, form):
self.csverrors.append("Yeah")
self.template_name+="yeah"
return super(ImportCsv, self).form_valid(form)
这个类只是显示了我无法理解的内容:一旦表单有效,就会调用form_valid()。在那里我改变了两件事:self.csverrors 和 self.template_name。
然后我重新加载我的页面:模板名称仍然是原始名称,但 csverrors 记住了“是”。我可以一次又一次地提交表单:csverrors 不断增长。重点是:我也可以更改self.form_class 和self.success_url,但一切都会在下一次连接中恢复。为什么 csverrors 仍然存在?
我看不出这两个变量之间的差异以及它们为何表现不同。在这种特殊情况下,我知道函数 get_gemplate_names(),但这是关于实例变量的一般问题。
我们的目标只是在一个实例变量中放入一些东西,并根据该变量更改get_success_url()。问题:该变量不会消失。
【问题讨论】:
标签: python django django-forms django-class-based-views