0

如何在 Django 模板中显示带有换行符的列表中的所有元素?例如,对于一个列表, ls = ['bin', 'boot', 'data', 'data2']我想以格式显示元素

bin
boot
data
data2

我努力了:

'\n'.join(ls)

这将返回带有空格的每个单词:

b i n b o o t d a t a d a t a 2

我的views.py中的相关代码:

   result1 = subprocess.Popen(['ls', '/home/zurelsoft/R'], stdout=subprocess.PIPE).communicate()[0]
        result = ''.join(result1)
        return render_to_response('thanks.html', {'res':result, 'res1':command}, context_instance=RequestContext(request))

模板的相应部分:

<td>{{ res }} </td>
4

7 回答 7

4

修改您的视图以使用该splitlines()函数将输出拆分为行列表:

def myview(request):
    result = subprocess.Popen(['ls', '/home/zurelsoft/R'], stdout=subprocess.PIPE).communicate()[0].splitlines()
    return render_to_response('thanks.html', {'res':result, 'res1':command}, context_instance=RequestContext(request))

然后使用模板中的连接过滤器将列表中的每个元素与 HTML 换行标记分开<br />

<td>{{ res|join:"<br/>" }}</td>
于 2012-11-19T08:53:14.987 回答
3

您可以使用 join newline (\n): -

'\n'.join(ls);  // This will only work for list of strings.

或者简单地使用 afor loop来遍历您的列表,并打印每个元素:-

for elem in ls: 
    print elem
于 2012-11-19T08:52:21.063 回答
2

如果 res 是一个列表,那么您可以遍历该列表并在其自己的标签中输出每个元素。

{% for r in res %}
  <td>{{ r }}</td>
{% endfor %}
于 2012-11-19T09:22:25.280 回答
2
'\n'.join(ls)

"\n"是一个特殊字符,意思是“换行符”。

于 2012-11-19T08:52:06.633 回答
0
>>> out=reduce(lambda x, y: x+y+'\n', ls, "" )
>>> print out
a
b
c
d
e

join调用 reduce 来累积结果。

于 2012-11-19T08:55:53.800 回答
0

尝试:

'\n'.join(ls)

它给出了一个列表,其中的元素用“下一行”分隔。在您的第一个示例中,您尝试了 '' 这是一个空符号。

于 2012-11-19T08:57:18.637 回答
0
for i in ls:
    print "%s"%i

这将为您提供所需的输出。

于 2012-11-19T08:59:04.183 回答