提交后 Django 表单为空白
Django form is blank after submit
我在 django 的模板中有一个简单的表单:
<div class="container">
<form action="{% url 'reporter:new_report' %}" method="post" novalidate>{% csrf_token %}
{{ report_form.as_p }}
<button type="submit" value="submit" class="btn btn-primary">Generuj raport</button>
</form>
</div>
但是当我想提交它时,它会向我的表单发送空白字段,我不知道为什么。
这是我的 views.py:
def report_create(request, template_name='reporter/created.html'):
report = Report()
if request.POST:
report_form = ReportForm(request.POST or None, prefix="report_form")
if report_form.is_valid():
report = report_form.save(commit=False)
report.report_name = report_form.cleaned_data['report_name']
report.save()
return render(request, template_name, {})
return redirect('reporter:empty_form')
forms.py:
class ReportForm(forms.ModelForm):
class Meta:
model = Report
fields = ['report_name', 'create_date', 'additional_findings',
'additional_recommendations', 'report_type']
和models.py:
class Report(models.Model):
report_name = models.CharField(max_length=100, blank=True)
create_date = models.DateField('date of creation', blank=True)
additional_findings = models.TextField(max_length=10000, blank=True)
additional_recommendations = models.TextField(max_length=10000, blank=True)
FULL_REPORT = 'FULL REPORT'
NOT_FULL_REPORT = 'NOT FULL REPORT'
REPORT_TYPE = (
(FULL_REPORT, 'Full report'),
(NOT_FULL_REPORT, 'Not full report')
)
report_type = models.CharField(max_length=100, choices=REPORT_TYPE, default=FULL_REPORT, blank=True)
我学的是Django,我做的都是教程里的,但是我不明白为什么这个表单在我想提交的时候还是空白的。
编辑:
我更改了 report_create 函数,但结果仍然相同 - 表单中的数据在那里是空白的。
如果您的所有字段都有效,那么您可以使用 report_form.cleaned_data
访问这些值
我终于解决了问题。
我将 name="{{ field.name }}"
添加到 html 文件中的输入字段。然后用 cleaned_data
打印所有值。它工作正常。
编辑:
我将 {{ report_form.as_p }}
更改为表单中字段的循环,并在输入中添加了 name
标签。
我在 django 的模板中有一个简单的表单:
<div class="container">
<form action="{% url 'reporter:new_report' %}" method="post" novalidate>{% csrf_token %}
{{ report_form.as_p }}
<button type="submit" value="submit" class="btn btn-primary">Generuj raport</button>
</form>
</div>
但是当我想提交它时,它会向我的表单发送空白字段,我不知道为什么。
这是我的 views.py:
def report_create(request, template_name='reporter/created.html'):
report = Report()
if request.POST:
report_form = ReportForm(request.POST or None, prefix="report_form")
if report_form.is_valid():
report = report_form.save(commit=False)
report.report_name = report_form.cleaned_data['report_name']
report.save()
return render(request, template_name, {})
return redirect('reporter:empty_form')
forms.py:
class ReportForm(forms.ModelForm):
class Meta:
model = Report
fields = ['report_name', 'create_date', 'additional_findings',
'additional_recommendations', 'report_type']
和models.py:
class Report(models.Model):
report_name = models.CharField(max_length=100, blank=True)
create_date = models.DateField('date of creation', blank=True)
additional_findings = models.TextField(max_length=10000, blank=True)
additional_recommendations = models.TextField(max_length=10000, blank=True)
FULL_REPORT = 'FULL REPORT'
NOT_FULL_REPORT = 'NOT FULL REPORT'
REPORT_TYPE = (
(FULL_REPORT, 'Full report'),
(NOT_FULL_REPORT, 'Not full report')
)
report_type = models.CharField(max_length=100, choices=REPORT_TYPE, default=FULL_REPORT, blank=True)
我学的是Django,我做的都是教程里的,但是我不明白为什么这个表单在我想提交的时候还是空白的。
编辑: 我更改了 report_create 函数,但结果仍然相同 - 表单中的数据在那里是空白的。
如果您的所有字段都有效,那么您可以使用 report_form.cleaned_data
我终于解决了问题。
我将 name="{{ field.name }}"
添加到 html 文件中的输入字段。然后用 cleaned_data
打印所有值。它工作正常。
编辑:
我将 {{ report_form.as_p }}
更改为表单中字段的循环,并在输入中添加了 name
标签。