如果我在.html模板中渲染静态图像,则它可以工作。但是,如果我将静态标记字符串作为字典值提供给模板(上下文),它将无法正常工作。这似乎与字符串格式有关,并且不允许我按照需要的方式使用{%%}。我试过了:
1. .format()
2.转义百分号
3.原始字符串
4.串联
5.自动转义
6. |安全
和其他一些东西
基本上,我正在用'''{%%}'''在view.py中构造一个多行字符串,然后使用该字符串作为上下文呈现模板。 Python 2。
更新
简单的无效示例:
view.py
def index(request):
image_insert = ''
images = ['image1.jpg', 'image2.jpg', 'image3.jpg']
for image in images:
image_insert += '<img src="{}">'.format(image)
context = {'insert': image_insert}
template = loader.get_template('index.html')
return HttpResponse(template.render(context, request))
index.html
{% load static %}
<!DOCTYPE html>
<html>
<head>
<title>Basic HTML File</title>
</head>
<body>
First Image
<img src={% static "image.jpg" %}>
Second Image <!-- does not work -->
{{ image_insert | safe }}
</body>
</html>
页面来源:
<!DOCTYPE html>
<html>
<head>
<title>Basic HTML File</title>
</head>
<body>
<img src=/static/mqdefault.jpg>
Second Image
<img src="image1.jpg"><img src="image2.jpg"><img src="image3.jpg">
</body>
</html>
显然,两者之间存在差异。如果有所不同,这是Django 1.11 btw。
答案 0 :(得分:1)
工作代码:
def index(request):
context = {'image_insert': "image.jpg"}
template = loader.get_template('index.html')
return HttpResponse(template.render(context, request))
index.html
{% load static %}
<!DOCTYPE html>
<html>
<head>
<title>Basic HTML File</title>
</head>
<body>
First Image
<img src="{% static "image.jpg" %}">
Second Image <!-- does not work -->
<img src="{% static image_insert %}">
</body>
</html>
答案 1 :(得分:1)
您还可以通过如下方式从视图传递img源来实现此目的:
views.py
sequelize.query(`
UPDATE person SET "fullName"="firstName" || ' ' || "lastName"
where "fullName" is null
`);
index.html
from django.contrib.staticfiles.templatetags.staticfiles import static
def index(request):
context = {'image_src': static("image.jpg")}
template = loader.get_template('index.html')
return HttpResponse(template.render(context, request))
更新:多张图片
您可以生成包含多个图像的标记,并将其传递到<!DOCTYPE html>
<html>
<head>
<title>Basic HTML File</title>
</head>
<body>
<img src="{{ image_src }}">
</body>
</html>
中,如在context
中所示:
views.py
views.py
现在,您更新后的from django.contrib.staticfiles.templatetags.staticfiles import static
def index(request):
images = [static('image1.jpg'), static('image2.jpg'), static('image3.jpg')]
images_html = "".join([
"<img src={image}>".format(image=image)
for image in images
])
context = {'images_html': images_html)}
template = loader.get_template('index.html')
return HttpResponse(template.render(context, request))
将是:
index.html
index.html
希望有帮助。