Django - 通过href为URL调度程序传递参数?

时间:2015-08-04 22:12:34

标签: python django

所以我正在一个网站上工作,在某些时候我会搜索并列出页面上的教科书列表。从那里我希望用户能够点击教科书,每本教科书都有自己的详细信息页面。我一直在尝试使用Django的URL调度程序,但我遇到了困难。代码和说明如下。

results.html

<table class="table">
    {% for items in results %}
    <tr><td>{{items.textbook_name}}</td><td>{{items.class_name}}</td><td>{{items.author}}</td><td>{{items.isbn}}</td><td><a href = "{% url 'textchange:textbook' %}?text_name={{items.textbook_name}}">></a></td></tr>
    {% endfor %}
</table>

Views.py

def textbook(request, text_name):
    return render_to_response(
        'textchange/textbook.html',
        locals(),
        context_instance=RequestContext(request)
        )

Urls.py

    url(r'^results/(?P<text_name>\w+)/$', views.textbook, name="textbook"),

根据我的理解,我认为我将items.textbook_name作为text_name传递给来自html的url,然后将使用text_name作为参数调用视图,但它不起作用。我可能会有点倒退。我需要用户点击的教科书中的textbook_name,因此在详细信息页面上我可以显示数据库中的所有信息。

感谢。

1 个答案:

答案 0 :(得分:2)

快速解释。

让我们说你的网址不需要text_name参数,以便:

{% url 'textchange:textbook' %}?text_name={{items.textbook_name}}

将导致:

/results/?text_name=some-name

text_name无法传递给url标记,只是简单地粘贴在网址的末尾。

要将text_name传递给url,并构建正确的url,您应该这样做:

{% url 'textchange:textbook' text_name=items.textbook_name %}

它将导致url:

/results/some-name/