Django模板显示列表

时间:2011-09-12 12:51:30

标签: python django templates

这是对前一个问题的跟进,但我会在此重新发布所有代码 -

我想在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:&nbsp;(\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:&nbsp;Levandosky </li>,
  <li class="efb9"> Edition:&nbsp; </li> ]

2 个答案:

答案 0 :(得分:3)

问题是因为输入错误。有些空间位置错误。使用这个

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

答案 1 :(得分:0)

在django中显示列表的最简洁方法是:

{{ var|unordered_list }}

如果要显示html:

,也可以添加safe
{{ mylist|safe|unordered_list }}

注意:在最后一段代码中,我不能100%确定safeunordered_list之前还是之后