【发布时间】:2018-05-27 03:27:59
【问题描述】:
我有两个单独的基于类的视图,并希望保留它们的功能,并让两个 CBV 指向同一个模板(我试图将两个单独的表单放入一个页面中)。
更具体地说,我正在尝试子类化/组合this email view 和这个password change view,这样我就可以让它们指向同一个模板,因为我最终希望这两个表单都在同一个页面上。
我试图通过将它们子类化到我自己的视图中来做到这一点:
class MyEmailUpdateView(LoginRequiredMixin, EmailView):
template_name = 'account/account_settings'
success_url = reverse_lazy('settings')
def form_valid(self, form):
return super(SettingsUpdateView, self).form_valid(form)
class MyPasswordUpdateView(LoginRequiredMixin, PasswordChangeView):
template_name = 'account/account_settings'
success_url = reverse_lazy('settings')
def form_valid(self, form):
return super(SettingsUpdateView, self).form_valid(form)
但是由于错误,我现在一一发现,除非我手动将其引入(success_url,方法等),否则似乎父类中的任何内容实际上都没有转移到我的自定义类中。即便如此,我子类化的原始类中的代码仍指向其他地方。
那么,当结合这两个视图时,我是否需要将所有原始代码复制到我的自定义子类视图中?
这是完成它的正确方法吗?如何结合这两种观点?我最终正在寻找一种方法,将它们的两个表单都放在我自己的应用程序的一个页面上。使用library's provided templates 是否有更简单的方法来完成此任务?
【问题讨论】:
-
当您说“我最终希望两个表单都在同一个页面上”时,您的意思是您希望一个 URL 指向包含两个表单的页面吗?
-
@ubadub 一个包含两种形式的页面的单个 URL,是的。