Python 如何使用基于类的视图更改传递给模板的表单的键
我有一个引用类似{{registeredteamform.team_name}}的表单的模板,但是Django基于类的通用视图使用键“form”传递表单。我希望更改传递给模板的表单的键,而不是更改模板中的表单名称(我正在处理多表单的情况) 我试着像这样扩展Python 如何使用基于类的视图更改传递给模板的表单的键,python,django,forms,inheritance,Python,Django,Forms,Inheritance,我有一个引用类似{{registeredteamform.team_name}}的表单的模板,但是Django基于类的通用视图使用键“form”传递表单。我希望更改传递给模板的表单的键,而不是更改模板中的表单名称(我正在处理多表单的情况) 我试着像这样扩展render\u to\u response方法 def render_to_response(self, context, **response_kwargs): response_kwargs['registeredteam
render\u to\u response
方法
def render_to_response(self, context, **response_kwargs):
response_kwargs['registeredteamform'] = context['form']
return super().render_to_response(self, context, **response_kwargs)
但这会引发错误
render_to_response()接受2个位置参数,但给出了3个
。那么,我如何更改表单键,并将render_to_response设置为执行此操作的适当位置?(我正在子类化CreateView
),您得到的错误是因为您使用super的方式。Python2.7的self
进入super()
,而Python3根本不需要传递self
返回super(MyClassView,self)。呈现给响应(上下文,**响应\u-kwargs)
return super()
如果深入研究CreateView
您将看到它位于get()
中,该表单实际上被分配给表单
键
def get(self, request, *args, **kwargs):
"""
Handles GET requests and instantiates a blank version of the form.
"""
form_class = self.get_form_class()
form = self.get_form(form_class)
return self.render_to_response(self.get_context_data(form=form))
您可以按现在的方式添加键,但是表单
键也将被分配
我可能建议重写get()
实际上,OP似乎在使用Python3,其中没有参数的super()
是正确的。但是您是对的,self
不应该在render\u to\u response
的参数中使用。
def get(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
return self.render_to_response(self.get_context_data(registeredteamform =form))