【发布时间】:2021-10-23 20:34:28
【问题描述】:
当使用 FormView 类创建视图并使用 get_context_data 在表单旁边的测试 html 页面上显示一些数据时, 当表单无效时收到错误,并且没有检索到上下文数据
在 get_context_data 中
上下文['用户名'] = 数据['用户名'] KeyError: '用户名'
表单失效时抛出Key Error
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']
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)
这是回溯
Traceback(最近一次调用最后一次):文件 "/usr/local/lib/python3.6/dist-packages/django/core/handlers/exception.py", 第 34 行,在内部响应 = get_response(request) 文件中 "/usr/local/lib/python3.6/dist-packages/django/core/handlers/base.py", 第 115 行,在 _get_response 响应 = self.process_exception_by_middleware(e, request) 文件 "/usr/local/lib/python3.6/dist-packages/django/core/handlers/base.py", 第 113 行,在 _get_response response = Wrapped_callback(request, *callback_args, **callback_kwargs) 文件 "/usr/local/lib/python3.6/dist-packages/django/views/generic/base.py", 第 71 行,在视图中返回 self.dispatch(request, *args, **kwargs) 文件 “/usr/local/lib/python3.6/dist-packages/django/contrib/auth/mixins.py”, 第 52 行,在 dispatch return super().dispatch(request, *args, **kwargs)文件“/usr/local/lib/python3.6/dist-packages/django/views/generic/base.py”, 第 97 行,在 dispatch return handler(request, *args, **kwargs) 文件中 “./ssh/views.py”,第 91 行,在 post return self.form_invalid(form, **kwargs) 文件“./ssh/views.py”,第 77 行,在 form_invalid context = self.get_context_data(**kwargs) 文件“./ssh/views.py”,第 97 行,在 get_context_data kwargs['username'] = data['username'] KeyError: '用户名'
在上面的场景中,
- 表单无效时如何获取上下文数据?
- 当表单被发送时,我们如何将表单错误发送回 html 页面 无效?
【问题讨论】:
标签: django django-views django-forms