我正在制作一个网页,其中包含一组歌曲标题和艺术家名称,并找到歌曲的歌词。
我有一个最小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
只包含一些纯文本。
我相信网址配置正确
url(r'^', include('lyricfind.urls', namespace='lyricfind')),
然后在lyricfind.urls
,
url(r'^$', views.search, name='search'),
url(r'^results/$', views.results, name='results'),
答案 0 :(得分:-1)
尝试将代码更改为:
def results(request):
SongFormSet = modelformset_factory(Song)
if request.method == 'POST':
formset = SongFormSet(request.POST)
if formset.is_valid():
# SAVE or Process Data Then:
return redirect('/some-save-confirmation-result-page')
# or if your doing just a search, should use GET and can return a rendered template.
return render(request, 'lyricfind/search.html', {'formset': formset})