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