我有一个网址的python列表,如下所示:
list = ['/abc/1',
'/abc/3',
'/abc/5',
...
]
所有这些网址都遵循网址格式' abc / n /'我在urls.py中定义了 现在我想将此列表传递给django模板,使得此列表的每个元素都可以单击并在单击它们时运行与其url模式对应的函数。 我尝试将锚标记硬编码到此列表的每个元素。例如
for i in range (len(list)):
list[i] = "<a href = \'" + list[i] + "\'>click me</a>"
然后通过上下文通过HttpResponse()
函数将此列表发送到模板。但是这显示了原始文本格式的列表项而不是链接
答案 0 :(得分:9)
这里发生的事情是django是安全的并且逃避你的HTML。这是为了防止XSS vunerabilities。这是一个漏洞,例如在用户可以将恶意HTML插入您的网站。
现在,您可以将其关闭,但之后您可能面临上述安全问题。
您要做的是在模板中生成html,而不是在代码中生成html(这就是模板的用途):
{% for link in links %}
<a href="{{ link }}">click me</a>
{% endfor %}
现在您只需要在模板上下文中传递links
!
答案 1 :(得分:0)
不使用for循环格式将链接格式化为html,只需将列表直接传递到您的上下文中,然后在django模板中使用:
{% for item in list %}
<a href="{{ item }}">Link text</a>
{% endfor %}
如果您的链接并非全部连续放在页面上,您可以使用:
{{ list.index }}
索引是您要访问的项目的索引