Python 如何在Hyperlink-Django模板中嵌入模板变量
我对web开发、Django、python、html等都是全新的。我有一个基本的Django应用程序,它显示已输入数据库的出版物标题列表。这个很好用 现在,我想使每个出版物标题都是一个链接,当单击该链接时,它会呈现另一个包含所单击出版物详细信息的模板。到目前为止,我知道如何获取出版物链接以呈现模板,但我正在尝试找出如何将出版物标题传递到超链接,以便在详细信息模板中呈现的数据特定于所选的标题 以下是我的出版物模板中的内容,其中显示了所有出版物(这是不正确的,但希望它能澄清我试图做的事情):Python 如何在Hyperlink-Django模板中嵌入模板变量,python,html,django,django-templates,Python,Html,Django,Django Templates,我对web开发、Django、python、html等都是全新的。我有一个基本的Django应用程序,它显示已输入数据库的出版物标题列表。这个很好用 现在,我想使每个出版物标题都是一个链接,当单击该链接时,它会呈现另一个包含所单击出版物详细信息的模板。到目前为止,我知道如何获取出版物链接以呈现模板,但我正在尝试找出如何将出版物标题传递到超链接,以便在详细信息模板中呈现的数据特定于所选的标题 以下是我的出版物模板中的内容,其中显示了所有出版物(这是不正确的,但希望它能澄清我试图做的事情): 正如我
正如我所说,我是一个非常初学者,所以如果我以错误的方式处理这个问题,任何建议或资源都将不胜感激。谢谢。这在我看来很不错,不过如果所有出版物标题都是唯一的,并且您希望将
出版物的实例而不是查询集(包含一个项目)传递到详细信息模板中,您可能希望在查看功能中使用get
而不是过滤器
。这将抛出一个错误,即存在0个或>1个匹配项,但听起来这可能是您想要的行为
然而,我不确定你在这里错过了什么。publication\u detail.html
看起来像什么?假设这些细节都包含在相关的发布实例中,那么您应该在上面的代码中基本上拥有呈现细节所需的一切。如果您使用url
模板标记,您就可以轻松地做到这一点
url.py
我希望你也知道,URL比普通的CharField
好得多
另一种选择:
url.py
views.py
这将使用条目的主键而不是标题。如果你想有一个带有标题的url,你需要在你的模型上添加并使用一个。看看问题是这样一行:“我认为在超链接中有{publication.title}似乎不起作用。我收到一个“找不到页面”错误,因此出版物_detail.html无法呈现。我明白了,谢谢。正如下面的答案所示,使用url
标记指定您的href
将非常容易地为您解决此问题。谢谢,刚刚尝试了此操作,并出现以下错误:NoReverseMatch at/publications Reverse for'details'with arguments'(u'publications',u'Awesome TV Shows')和关键字参数“{}”,未找到。再次感谢。好的,我明白你的意思,我会调查斯拉格菲尔德。但有一个问题-我使用了您发布的替代代码,出版物没有显示为链接(它们不能单击)。我在模板中实现了URL标记,如:{%for publication in publication_list%}- {%URL'details''publications'publications.pk%}
{%endfor%}
这是否正确?抱歉,我必须去,我应该包括整个模板,因为只有标签可能不清楚它的用法。不过很高兴你找到了答案
<html>
<head><title>Publications</title></head>
<body>
<h1>Publications</h1>
<ul>
{% for publication in publication_list %}
<li><strong><a href="/publications/{{publication.title}}/detail">{{ publication.title}}</strong></li></a>
{% endfor %}
</ul>
</body>
</html>
url(r'^(?P<detail_type>\w+)/(?P<link_item>\w+)/detail$', get_details)
def get_details(request, detail_type=None, link_item=None):
if detail_type == "publications":
publication = Publication.objects.filter(title__iexact=link_item)
return render(request, 'publication_detail.html', {'detail_type' : detail_type, 'publication' : publication})
elif ....
url(r'^(?P<detail_type>\w+)/(?P<link_item>\w+)/detail$', get_details, name='details')
{% url 'details' 'publications' publication.title %}
url(r'^(?P<detail_type>\w+)/(?P<pk>\w+)/detail$', get_details, name='details')
{% url 'details' 'publications' publication.pk %}
def get_details(request, detail_type=None, pk=None):
if detail_type == "publications":
publication = Publication.objects.get(pk=pk)
return render(request, 'publication_detail.html', {'detail_type' : detail_type, 'publication' : publication})
elif ....