Django无效表单:此字段为必填字段
我经常遇到一个表单无效的错误。我的视图中有一些print语句,它们表明查询字段没有被提交——我在本文的底部包含了一些输出。为什么查询没有提交?是因为我使用GET提交表单吗 这是我的forms.py:Django无效表单:此字段为必填字段,django,Django,我经常遇到一个表单无效的错误。我的视图中有一些print语句,它们表明查询字段没有被提交——我在本文的底部包含了一些输出。为什么查询没有提交?是因为我使用GET提交表单吗 这是我的forms.py: from django import forms class SearchForm(forms.Form): query = forms.CharField(label='Search', max_length=200) views.py: from django.shortcuts
from django import forms
class SearchForm(forms.Form):
query = forms.CharField(label='Search', max_length=200)
views.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>
{%csrf_令牌%}
搜寻
逐字逐句
{{结果|安全}
{results%%中的行的百分比}
新表行
{第%行中的值为%0}
{{value.0}}
{%endfor%}
{%endfor%}
一些输出行:
[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
[07/Feb/2020 02:55:17]“获取/搜索/?csrfmiddlewaretoken=RKdAkUxI7ax4Z2Nw05FSUySADe9KAlqMijBeVsHv6uRuPy3DfS6UUnlNXoj6E8mM HTTP/1.1”200 374
搜索:- 此字段为必填字段。
无效的
[07/Feb/2020 02:55:19]“GET/search/HTTP/1.1”200 374
搜索:- 此字段为必填字段。
无效的
您需要指定文本字段的名称:谢谢。我的印象是这个名字标签已经被弃用了,所以我认为没有必要这么做