Можно ли вызвать метод класса as_view () из контроллера? - PullRequest
1 голос
/ 05 мая 2020

Мне нужно передать переменную, которая инициализирована в контроллере.

Похоже на маршрутизацию:

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

Book Wizard - класс, унаследованный от SessionWizardView от formtools модуля

Ниже представлен фрагмент контроллера, в котором создается переменная:

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))

В результате я получаю такую ​​ошибку: error

Может быть, есть другой способ передать переменную и вызвать метод?

1 Ответ

1 голос
/ 05 мая 2020

Нет , так как он стремится найти ту же функцию. Функция равна на основе ссылки равенства. Но здесь вы создаете две функции, которые могут выполнять одно и то же, но по-прежнему являются двумя разными объектами.

При этом вам это не нужно, и это также довольно "неэлегантно" Сделай так. Подробнее Pythoni c должен дать представлению имя и ссылаться на имя:

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

и, в вашем представлении, ссылаться на него с помощью:

return redirect(<b>'contact'</b>)

Обратите внимание, что вы можете не «передавать параметры» в вызове перенаправления, кроме закодированного в URL-адресе, или в файлах cookie или переменных сеанса. Таким образом, initial будет тем, который вы установили в urlpatterns, независимо от того, какой initial вы установили в redirect.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...