我有一个模板引用像{}这样的表单,但Django 's generic class based views pass forms using the key '表单'. Rather than changing the form name in my template (I' m处理多表单情况)我想更改传递给模板的表单的键 .
我尝试像这样扩展 render_to_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() takes 2 positional arguments but 3 were given
. 那么,我如何更改表单键并且render_to_response是否适合这样做呢? (我正在继承 CreateView
),
1 回答
你得到的错误是因为你使用super的方式 .
self
用于Python 2.7的super()
,你根本不需要为Python 3传递self .Python 2.7:
return super(MyClassView, self).render_to_response(context, **response_kwargs)
Python 3:
return super().render_to_response(context, **response_kwargs)
如果你深入研究
CreateView
,你会看到它在get()
中实际被分配给form
键 .您可以按照现在的方式添加键,但
form
键仍将被分配 .我可能会建议覆盖
get()
.