使用 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¶m2=val2" 【参考方案1】:最简单、最简单的方法是使用单独的按钮。如果您为每个视图指定一个名称,并且在特定视图处于活动状态时仅显示适当的视图,则您可以根据 POST 中按钮名称的存在来判断哪个视图处于活动状态。
唯一的其他途径是创建一个隐藏字段,并在视图更改时使用 javascript 适当地设置该字段的值。
【讨论】:
以上是关于使用 django 表单提交传递变量的主要内容,如果未能解决你的问题,请参考以下文章
Django,如何在提交表单时将 HTML 表单值传递给 URL?
使用 formset / managment_form 变量时,提交的 Django 表单没有 POST 数据