这是对前一个问题的跟进,但我会在此重新发布所有代码 -
我想在Django中显示列表的内容,我在我的模板中使用它 -
<body>
<h1>Testing the class page backend</h1>
<ul>
{ % for author in authors% }
<li>{{ author|safe }}</li>
{ % endfor % }
</ul>
</body>
(由于上一个问题,我添加了保险箱)为了测试,我将searchTerm设置为等于“Math 51”。 作者由此函数提供 -
def getAllInformation(searchTerm, template_name):
searchTerm = "MATH 51"
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},
)
getAuthorName也是这个 -
def getAuthorName(soup):
temp = soup.findAll('li', {"class": "efb9"})
storeOfAuthorNames = []
reName = re.compile('Author: (\w+)')
for i in range(len(temp)):
if (i % 2 == 0):
name = temp[i].string
editedName = re.findall(reName, name)
editedName = editedName[0]
storeOfAuthorNames.append(editedName)
return storeOfAuthorNames
我知道如果我要输入MATH 51作为searchTerm,storeOfAuthorNames会返回一个值(在本例中为'Levandosky'),因为我已打印到控制台并显示出来。
因此,我不知道为什么我提供的模板代码不显示作者姓名,只显示模板标签。
有人可以帮忙吗?
编辑 - 也是temp的内容 -
[ <li class="efb9"> Author: Levandosky </li>,
<li class="efb9"> Edition: </li> ]
答案 0 :(得分:3)
问题是因为输入错误。有些空间位置错误。使用这个
{% for author in authors %}
<li>{{ author|safe }}</li>
{% endfor %}
答案 1 :(得分:0)
在django中显示列表的最简洁方法是:
{{ var|unordered_list }}
如果要显示html:
,也可以添加safe
{{ mylist|safe|unordered_list }}
注意:在最后一段代码中,我不能100%确定safe
是unordered_list
之前还是之后