处理POST表单时没有返回

时间:2015-01-19 19:17:01

标签: django django-forms

我正在制作一个网页,其中包含一组歌曲标题和艺术家名称,并找到歌曲的歌词。

我有一个最小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'),

1 个答案:

答案 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})