Контекстные данные не используются, когда форма недействительна

я создаю представление, используя класс 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)
Вернуться на верх