Django Неверная форма: это поле обязательно для заполнения - PullRequest
0 голосов
/ 07 февраля 2020

Я получаю сообщение об ошибке, когда форма недействительна. У меня есть несколько утверждений для печати, и они указывают, что поле запроса не отправляется - я включил некоторые выходные данные в конец этого поста. Почему запрос не отправляется? Это потому, что я использую GET для отправки формы?

Вот мои формы.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>

некоторые строки вывода:

[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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...