使用 django 表单提交传递变量

Posted

技术标签:

【中文标题】使用 django 表单提交传递变量【英文标题】:Pass variable with django form submission 【发布时间】:2012-08-24 10:08:40 【问题描述】:

我的侧边菜单顶部有一个搜索框。此搜索栏搜索所有视图(任务、列表和信息)。结果显示在这三个类别中,但默认情况下会折叠列表和信息以使视图更易于阅读。

相反,我想确定用户用于搜索的侧边菜单,并在返回结果时折叠其他两个类别。

因此,如果用户正在查看任务,则搜索结果会列出任务,但返回列表和信息结果会折叠。如果用户在列表中使用搜索框,结果将列出列表项,但会折叠任务和信息。

同一个函数用于处理所有的搜索结果:

def search(request):

    query_string = ''
    search_results = SortedDict([])

    if ('q' in request.GET) and request.GET['q'].strip():
        query_string = request.GET['q']

        entry_query = get_query(query_string, ['name', 'notes',])

getquery() 在数据库中搜索查询字符串

这个函数是从模板中调用的:

<form method="get" action="% url search %" style="display:inline;" >
    <input name="q" class="span9" value=" request.GET.q " id="appendedInputButton" size="16" type="text">
    <button class="btn" type="submit">
        <i class="icon-search" title="Search"></i>
    </button>
</form>

我如何将当前 url 或其他模板变量与此表单提交一起传递,以便我在搜索功能中获得一些可用的模板信息? 这样我就可以将信息传递给会告诉模板哪些类别要折叠的搜索结果。

【问题讨论】:

在您的搜索表单中添加一个隐藏输入来标识调用它的视图是否可行? (例如 尝试获取参数。 action="% url 搜索 %?param1=val1&param2=val2" 【参考方案1】:

最简单、最简单的方法是使用单独的按钮。如果您为每个视图指定一个名称,并且在特定视图处于活动状态时仅显示适当的视图,则您可以根据 POST 中按钮名称的存在来判断哪个视图处于活动状态。

唯一的其他途径是创建一个隐藏字段,并在视图更改时使用 javascript 适当地设置该字段的值。

【讨论】:

以上是关于使用 django 表单提交传递变量的主要内容,如果未能解决你的问题,请参考以下文章

Django:从其他表单传递参数以提交按钮

Django,如何在提交表单时将 HTML 表单值传递给 URL?

使用 formset / managment_form 变量时,提交的 Django 表单没有 POST 数据

提交表单时使用路由参数传递变量Laravel 5.2

使用JQuery的ajax提交表单能否使用一个变量来获取form的id

如何在 playframework 中提交带有多维数组的表单并将变量传递给控制器​​的操作