【问题标题】:How to get Django Form to return the same page如何让 Django 表单返回相同的页面
【发布时间】:2014-05-30 01:51:21
【问题描述】:

我有一个我一直在处理的表单,目前显示在一个名为 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))

【问题讨论】:

  • 你试过ajax请求了吗??

标签: django forms


【解决方案1】:

在功能页面视图中(根据示例) 你可以做类似的事情

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))

我的建议:学习基于类的视图,您可以拥有更精细的能力来处理诸如此类的“重复”任务。

【讨论】:

  • 我不明白:这不只是将表单绑定到 other_page,而不是让它独立于任何页面。而且我不明白 object_list 在这里做什么......除非我完全误解了你,这似乎根本没有解决我的问题。另外,您指的是哪些“重复性任务”?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
  • 2020-04-22
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
相关资源
最近更新 更多