所以我正在一个网站上工作,在某些时候我会搜索并列出页面上的教科书列表。从那里我希望用户能够点击教科书,每本教科书都有自己的详细信息页面。我一直在尝试使用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,因此在详细信息页面上我可以显示数据库中的所有信息。
感谢。
答案 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/