首页 > 解决方案 > 是否可以从控制器调用类的 as_view() 方法?

问题描述

我需要传递一个在控制器中初始化的变量。

它看起来像路由:

urlpatterns = [
    path('form/check/', room_check, name='room_check'),
    path('contact/', BookWizard.as_view(FORMS, initial_dict=initial)),
]

Book Wizard - 继承自formtools模块的 SessionWizardView 的类

以下是创建变量的控制器的一部分:

initial = {
           '0': {'check_in_date': check_in_date,
                 'date_of_eviction': date_of_eviction,
                 'category': category,
                 'number_of_adults': number_of_adults,
                 'number_of_children': number_of_children}}

return redirect(BookWizard.as_view(FORMS, initial_dict=initial))

结果,我收到此错误: 错误

也许还有另一种传递变量和调用方法的方法,是吗?

标签: pythondjangoforms

解决方案


,因为它旨在找到相同的功能。基于引用相等,函数相等。但是在这里你构造了两个函数,它们可能同样的事情,但仍然是两个不同的对象。

话虽这么说,你不需要这个,这样做也相当“不雅”。更多的 Pythonic 是给视图起一个名字,并引用这个名字:

urlpatterns = [
    path('form/check/', room_check, name='room_check'),
    path('contact/', BookWizard.as_view(FORMS, initial_dict=initial), name='contact'),
]

在您看来,请参考:

return redirect('contact')

请注意,除了在 URL、cookie 或会话变量中编码的重定向调用之外,您不能在重定向调用中“传递参数”。因此,无论您在 中设置什么,都将initial是您在 中设置的那个。urlpatternsinitialredirect


推荐阅读