Django在临时目录中显示列表内容

2024-04-27 07:21:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Django的模板系统很陌生- 基本上,我试图打印出在上下文中传递给django的列表的所有内容。

我的url.py的相关部分在这里-

 url(r'^class/$', twobooks.classes.views.getAllInformation, {'template_name':'classes/displayBooks.html'}),

现在,在我看来,getAllInformation如下-

def getAllInformation(searchTerm,template_name):
    nameAndNumberStore = modifySearchTerm(searchTerm)
    url = modifyUrl(nameAndNumberStore)
    soup = getHtml(url)
    information = []
    if (checkIfValidClass(soup,nameAndNumberStore)):
        storeOfEditions = getEdition(soup)
        storeOfAuthorNames = getAuthorName(soup)
        storeOfBookNames = getBookNames(soup)
        storeOfImages = getImages(soup)
    information.append(storeOfAuthorNames)#REMEMBER this is a list of two lists 
    information.append(storeOfEditions)
    return render_to_response(
    template_name,
    {'authors': storeOfAuthorNames},
    )

displayBooks.html如下-

<html>
<head>
<body>
<h1>Testing the class page backend</h1>
<ul>
{ % for author in authors|safe% }
    <li>{{ author }}</li>
{ % endfor % }
</ul>

</body> 

</html>

我觉得这很简单,但我不知道发生了什么,所以我想我需要一些帮助-谢谢!


Tags: nameurlinformationhtmltemplateclassclassessoup
2条回答

如果您提到了storeOfAuthorNames的数据格式、您当前获得的输出以及您所期望的结果,这将有所帮助。

从你的观点我只能看出:

  • authorsstoreOfAuthorNames)由getAuthorName(soup)产生
  • 如果checkIfValidClass(...)返回False,则在尝试引用storeOfAuthorNames时,将以NameError结束,因为它将未声明

如果我只能根据示例模板来猜测您的问题在哪里,我会说您的问题是authors|safe。您需要对要打印的值应用safe过滤器,而不是列表本身。i、 e

<ul>
{ % for author in authors %}
    <li>{{ author|safe }}</li>
{ % endfor % }
</ul>

应用^{}过滤器将把任何变成一个字符串。如果你从字面的[1, 2, 'foo', u'bar']开始,你最终会得到近似字面的u"[1, 2, 'foo', u'bar']"(或者类似的东西——我不太确定它是如何呈现的,因为我从未尝试过这样做;我也说“近似”,因为它实际上是一个SafeString实例,而不是一个unicode实例)。然后,迭代将遍历生成的字符串中的每个字符,这不是您想要的。

相反,您可以使用^{}过滤器,它将safe过滤器应用于序列中的每个元素

<ul>
{% for author in authors|safeseq %}
    <li>{{ author }}</li>
{% endfor %}
</ul>

或者,可以对迭代器中的值应用safe

<ul>
{% for author in authors %}
    <li>{{ author|safe }}</li>
{% endfor %}
</ul>

我建议您使用safeseq,因为如果您只想显示值,那么您可以使用^{}过滤器进一步优化模板。(请注意,我不确定它的行为方式,这可能会使它失去安全性。你得试试。)

<ul>{{ authors|safeseq|unordered_list }}</ul>

相关问题 更多 >