Я работаю над веб-страницей, которая берет набор названий песен и имен художников и находит тексты песен.Ничего не возвращается в процессе обработки POST-формы
У меня есть минимальная страница search
с формой POST
и кнопкой отправки.
def search(request):
formset = modelformset_factory(Song, fields=('title', 'artist', 'song_pk'))
return render(request, 'lyricfind/search.html', {'formset': formset})
для зрения, и
<form method="post" action="/results/">
{% csrf_token %}
{{ formset }}
<input type="submit" value="Submit">
</form>
для шаблона.
Однако, когда я ввожу данные в полях ввода текста и нажмите кнопку отправки, ошибка
The view lyricfind.views.results didn't return an HttpResponse object. It returned None instead.
брошено.
Я не вижу причину этой ошибки.
Я не был уверен в том, как я должен написать свое мнение, поэтому взгляд может быть причиной.
def results(request):
SongFormSet = modelformset_factory(Song)
if request.method == 'POST':
formset = SongFormSet(request.POST)
if formset.is_valid():
return HttpResponseRedirect(reverse('lyricfind/results.html', {'formset': formset}))
return render(request, 'lyricfind/search.html', {'formset': formset})
Шаблон, results.html
, просто содержит простой текст.
Я считаю, что URLs правильно настроены
url(r'^', include('lyricfind.urls', namespace='lyricfind')),
, а затем в lyricfind.urls
,
url(r'^$', views.search, name='search'),
url(r'^results/$', views.results, name='results'),
Я бы поставил вас есть ошибка в HttpResponseRedirect , в пределах наоборот, который, вероятно, возвращает None при ошибке (поскольку lyricfind/results.html не является URL-адресом, определенным в u rls.py. reverse требует либо «поиск», либо «результат», один из ваших URL-адресов, которые определены. зачем использовать Redirect/Reverse здесь? –