Django模板:如何在{%for%}循环中保存项目?

时间:2010-01-22 18:02:33

标签: django django-templates

This application returns schoolmates of lawyers

当用户仅搜索名字和there are more than 1 result时,我会在表单中保留查询并要求他们输入姓氏。但我认为如果用户只是点击其中一个名称并直接返回搜索结果会更好。 (此时链接会再次搜索表单。)

在模板中,我需要的查询和姓氏在{% for lawyer in lawyers %}循环中作为属性:lawyer.firstlawyer.last。我无法弄清楚如何保存它们来创建查询。你能帮我解决一下这个问题吗?

注意:模板如下,但我将view function放在pastebin.com中。这是60行,我不确定我是否应该在这里张贴它。

谢谢。

<html>
<head>
    <title>Search results</title>
</head>
<body>

 <p>You searched for <strong>{{ first|capfirst }} </strong>.</p>

<p>There are {{ lawyers|length }} {{ first|capfirst }} in the database. Please select one.</p>

{% for lawyer in lawyers %}
    <ul><li><a href="/search/">{{ lawyer.first }} {{ lawyer.last }} {{ lawyer.firm_name }} {{ lawyer.school}} class of {{ lawyer.year_graduated }}</a></li></ul>
{% endfor %}

<form action="" method="get">
{{ form.as_p }}
<input type="submit" value="Submit">
    </form>
</body>
</html>

修改

我是否需要创建这样的新视图函数?

def new_query(request):
    last_name = request.GET.get('lawyers.last')
    first_name = request.GET.get('lawyer.first')
    ....

2 个答案:

答案 0 :(得分:1)

您可以将它们添加为GET参数

<a href="/search/?first={{lawyer.first}}&last={{lawyer.last}">

然后通过request.GET,您可以访问传递的项目。

答案 1 :(得分:1)

由于您正在为表单使用GET,因此您可以使用普通链接完全模拟表单提交。

<a href="?first_name={{lawyer.first}}&last_name={{lawyer.last}">

这将向当前URL发送请求(因为我们没有指定任何URL,只是GET参数。这相当于

<form action="" method="get">

但是添加到表单2参数,名为first_name和last_name,就像在普通表单中调用它们一样 - 这样相同的视图就可以处理此请求。

如果你的表单中有其他参数(例如year_of_graduation),你也必须添加它们。