如何让Django Form返回同一页面

时间:2014-05-30 01:51:22

标签: django forms

我有一个我正在处理的表单,目前显示在名为search_test.html的模板中,我终于可以正常工作了。我想将它实际集成到我的网站中,但在我的网站上它不会成为它自己的页面,它将成为大多数页面上的侧边栏。我知道当我这样做时,这一行

return render_to_response('corpus/search_test.html', 
                                  {'form': form}, context_instance=RequestContext(request))

会给我带来麻烦,因为我不想实际重定向到search_test.html。

我有什么可以取代这个' render_to_response'用,告诉它只是停留在同一页面,但仍然传递表格信息?我知道这必须是简单的事情,但我已经在网上和文档中查看过,我找不到类似的例子。 (表单的视图代码如下。)

谢谢。

def concord_test(request):

    if request.method == 'POST': # If the form has been submitted...
        form = ConcordanceForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            searchterm = form.cleaned_data['searchterm'].encode('utf-8')
            search_type = form.cleaned_data['search_type']
            category = form.cleaned_data['category']
            context, texts_len, results_len = make_concordance(searchterm, search_type, cat=category)
            return render_to_response('corpus/concord.html', locals()) # Redirect after POST
    else:
        form = ConcordanceForm() # An unbound form
    return render_to_response('corpus/search_test.html', 
                              {'form': form}, context_instance=RequestContext(request))

1 个答案:

答案 0 :(得分:0)

在功能页面视图中(根据示例) 你可以做点什么

def other_page(request):

    if request.method == 'POST': 
        return concord_test(request)
    else:
        form = ConcordanceForm() 

        #Processing for other_page
        object_list = OtherPageModel.objects.all()

    return render_to_response('corpus/other_page.html', 
                          {'form': form , 'object_list': object_list }, context_instance=RequestContext(request))

我的建议:基于研究课程的观点,你可以拥有更细粒度的能力来处理像这样的“重复”任务。更多。