我想在视图中生成带有静态URL的图像,然后在模板中呈现它。我使用mark_safe
以便HTML不会被转义。但是,它仍然无法渲染图像。如何在Python中生成图像标记?
from django.shortcuts import render
from django.utils.safestring import mark_safe
def check(request):
html = mark_safe('<img src="{% static "brand.png" %}" />')
return render(request, "check.html", {"image": html})
在模板中渲染:
{{ image }}
呈现img标记而不生成url:
<img src="{% static "brand.png" %} />
答案 0 :(得分:6)
您已将包含模板指令的字符串标记为安全。但是,模板一次性渲染。当你渲染那个字符串时,它不会通过然后呈现渲染字符串中的任何指令。您需要generate the static url而不使用模板指令。
from django.contrib.staticfiles.templatetags.staticfiles import static
url = static('images/deal/deal-brand.png')
img = mark_safe('<img src="{url}">'.format(url=url))