django - 表格已填写但仍然无效
问题描述
我正在尝试从表单中获取数据并在表单有效时重定向。但是,我似乎没有获取任何数据。在一次测试中,我用“测试”填写每张表格。我希望这些表单有效并重定向到成功页面,并且无法弄清楚我的逻辑哪里出错了。
错误:
form.errors = <ul class="errorlist"><li>category<ul class="errorlist"><li>This field is required.</li></ul></li><li>comment<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
表格.py
from django import forms
class CandidateReportForm(forms.Form):
category = forms.CharField(label='Category', max_length=10)
comment = forms.CharField(label='Comment', max_length=1000)
视图.py
from django.shortcuts import render
from django.views import View
from .forms import CandidateReportForm
class CandidateReportView(View):
form_class = CandidateReportForm
form_template = 'Reports/candidate_report.html'
form_submit_template = 'Reports/report_submitted.html'
form_submit_error = 'Reports/report_error.html'
def get(self, request, *args, **kwargs):
form = self.form_class()
return render(request, self.form_template, {'form': form})
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
return render(request, self.form_submit_template)
else:
print(f"form.errors = {form.errors}")
return render(request, self.form_submit_error)
html
<div class="container">
<div class="card">
<h2 class="card-title">Report</h2>
{{ form.as_p }}
<form action="submit_candidate_report" method="post">{% csrf_token %}
<input class="btn btn-primary" id="report" name="report" type="submit" value="Submit">
</form>
</div>
</div>
解决方案
您正在将表单呈现在标签之外!form
只有标签内的字段form
被提交到服务器,所以你的form
标签的 html 应该是:
<form action="submit_candidate_report" method="post">
{% csrf_token %}
{{ form.as_p }}
<input class="btn btn-primary" id="report" name="report" type="submit" value="Submit">
</form>
推荐阅读
- javascript - 使用 PHP V8JS 渲染 javascript 时出现问题
- angular - Karma 看不到带有 _ 的目录下的规范文件(例如:_ui)
- android - Android 无法从 /lib/ 执行 Android API 29 (Android 10) 的进程
- python - 阻止文本在 Tkinter 画布中重叠
- erlang - 有什么方法可以在 Windows 上的 CMD 上调用 Erlang 切换命令?
- php - PHP 数组显示索引 - 但是当我尝试使用它时索引未定义
- javascript - TypeError: Date.prototype.Method 不是函数 - 方法突然不起作用
- python - 如何使用应用程序上下文来模拟烧瓶请求
- java - MongoDb 聚合,用于基于 ids 过滤列表并将此过滤列表映射到另一个字段
- php - 如何在 Woocommerce 我的帐户页面上打印登录的用户名?