Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django无效表单:此字段为必填字段_Django - Fatal编程技术网

Django无效表单:此字段为必填字段

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

我经常遇到一个表单无效的错误。我的视图中有一些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 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 搜索:
  • 此字段为必填字段。
无效的
您需要指定文本字段的名称:谢谢。我的印象是这个名字标签已经被弃用了,所以我认为没有必要这么做