django - Django 表单无效:此字段是必需的
问题描述
我不断收到表单无效的错误。在我看来,我有一些打印语句,它们表明查询字段没有被提交——我在这篇文章的底部包含了一些输出。为什么查询不提交?是因为我使用 GET 提交表单吗?
这是我的forms.py:
from django import forms
class SearchForm(forms.Form):
query = forms.CharField(label='Search', max_length=200)
视图.py:
from django.shortcuts import render
from django.http import HttpResponse
from . import pull
from .forms import SearchForm
def search(request):
if request.method == "GET":
form = SearchForm(request.GET)
print(request.GET)
print(form)
if form.is_valid():
query = form.cleaned_data['query']
print(query)
results = pull.main(query)
print(results)
return render(request, 'book_search/results_copy.html', {'form': form, 'results': results})
else:
print("invalid")
form = SearchForm()
return render(request, 'book_search/results_copy.html', {'form': form})
else:
return HttpResponse("Invalid request type")
results_copy.html:
<html>
<head>
</head>
<body>
<form method="GET" action="">
{% csrf_token %}
<input type="text" value="">
<button type="submit">Search</button>
</form>
<p>Text after form</p>
{{ results|safe }}
<table>
{% for row in results %}
New table row
<tr>
{% for value in row %}
<td>{{ value.0 }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
</body>
</html>
一些输出行:
[07/Feb/2020 02:55:17] "GET /search/?csrfmiddlewaretoken=RKdAkUxI7ax4Z2Nw05FSUySADe9KAlqMijBeVsHv6uRuPy3DfS6UUnlNXoj6E8mM HTTP/1.1" 200 374
<QueryDict: {}>
<tr><th><label for="id_query">Search:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="query" maxlength="200" required id="id_query"></td></tr>
invalid
[07/Feb/2020 02:55:19] "GET /search/ HTTP/1.1" 200 374
<QueryDict: {'csrfmiddlewaretoken': ['YjGmS7b8zWYZ4HyIrI11zrdxv6PPeR0npS40tFlVygipUdOPGvs3zgGKPgZbiEWn']}>
<tr><th><label for="id_query">Search:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="query" maxlength="200" required id="id_query"></td></tr>
invalid
解决方案
推荐阅读
- jenkins-pipeline - 检查是否对计划的 Jenkins 作业的存储库进行了更改
- r - “ while ((it <- it + 1) < limit && abs(del) > eps) { : 需要 TRUE/FALSE 的缺失值时出错” glmm.zinb 中的错误
- c++ - SIGABRT:CMake 与手动 g++ 编译
- python - Python pyqt5不执行SQL语句
- java - Mockk 在测试执行之间清除模拟
- android - 为什么尝试暂停音频时暂停按钮不起作用?
- spring - 为什么 FindByCode 返回空对象?
- angular - 在使用 Angular 将标头插入 HTLM 之前,有什么方法可以从 SSR 页面 serverApp-state 中删除标头?
- blackberry-10 - 在 linux 上安装了 Momentics IDE,但不能在终端中使用 qcc
- javascript - 浏览器似乎将 React JS 文件读取为 HTML,而不是 JSX