Контекстные данные не используются, когда форма недействительна
я создаю представление, используя класс FormView и используя get_context_data для отображения некоторой информации на тестовой html странице рядом с формой, Ошибка возникает, когда форма становится недействительной
in get_context_data
context['username'] = data['username'] KeyError: 'username'
я не уверен, почему контекстные данные не подхватываются при аннулировании формы
class TestView(LoginRequiredMixin,FormView):
form_class = TestForm
template_name = 'test.html'
def get_context_data(self, **kwargs):
context = super(CredentialsView, self).get_context_data(**kwargs)
if self.request.user.is_authenticated:
data = TestViewSet.as_view({'get': 'list'})(self.request).data
context['username'] = data['username']
context['firstname'] = data['firstname']
context['lastname'] = data['lastname']
context['validstartdate'] = data['validstartdate']
context['validenddate'] = data['validenddate']
return context
def form_valid(self, form):
password = form.cleaned_data['password']
if form.is_valid():
return self.query_api(password)
else:
return super(TestView, self).form_valid(form)
get_context_data вызывается перед вашей функцией form_valid.
При загрузке страницы вы пытаетесь получить значение data["username"], а она еще не завершена.
В основном : GET на вашем View -> вызывается get_context_data --> Форма еще не заполнена
Вы могли бы получить свои args в пост-функции.
def post(self, request, *args, **kwargs):
form = TestForm(request.POST)
if form.is_valid():
# Do Stuff
else:
# Something else
return render(ThePageWithTheForm)