Ошибка ключа Django: KeyError в запросе 'template.html' при запуске формы - PullRequest
0 голосов
/ 01 мая 2018

Я работаю с библиотекой Pinax-Stripe и хочу создать настраиваемую учетную запись для вошедшего в систему пользователя. Я пытаюсь переписать CreateCustomAccountView () как представление на основе функций . Причина в том, что я не понимаю, откуда взято CreateBankAccountView, и нигде не видно в коде GitHub .

Так что для простоты у меня есть следующая форма:

class Form(DynamicForm):
    # some form fields
    def __init__(self, *args, **kwargs):
         self.request = kwargs.pop("request")

views.py

def view(request):
    if request.method == 'POST':
        form = Form(request.POST)
    else:
        form = Form()
    return render(request, 'dashboard/template.html', {'form': form})

У меня есть request в моем процессоре шаблонов. Я не уверен, почему это происходит и как можно создать пустую форму?

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Проблема, которую вы видите с представлением на основе классов, является законной, и я предполагаю, что разработчик внезапно пропустил эту часть кода. Если вы все еще хотите использовать представление на основе классов, попробуйте заменить:

form_kwargs = super(
        CreateBankAccountView, self
    ).get_form_kwargs(
        *args, **kwargs
    )

С:

form_kwargs = super(CreateCustomAccountView, self).get_form_kwargs()

Класс CreateCustomAccountView, get_form_kwargs() не принимает аргументов.

0 голосов
/ 01 мая 2018

Поскольку ваша форма выскакивает request без значения по умолчанию,

     self.request = kwargs.pop("request")

Вы должны передать запрос в форму. Например:

if request.method == 'POST':
    form = Form(request.POST, request=request)
else:
    form = Form(request=request)
...