Python 如何使用基于类的视图更改传递给模板的表单的键

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

我有一个引用类似{{registeredteamform.team_name}}的表单的模板,但是Django基于类的通用视图使用键“form”传递表单。我希望更改传递给模板的表单的键,而不是更改模板中的表单名称(我正在处理多表单的情况)

我试着像这样扩展
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))