我想要显示我的静态文件中的对象图片。但是对于某些物体,我没有照片,对于那些我想要显示“无照片”的图像。因此,我有一个称为图片的字段,对于具有可用图片的对象设置为1,对于没有可用图片的对象设置为0。 我制作了一个模板标签,应该可以插入正确的图片,但我遇到了问题。
模板标记文件:
def static_picture(id_internal, picture):
if picture == 1:
return '"' + "{% static" + ' "' + 'img/pictures/' + id_internal + '.jpg' + '"' + ' %}' + '"'
else:
return '"' + "{% static" + ' "' + 'img/pictures/picture_missing.jpg' + '"' + " %}" + '"'
HTML:
<img src="{{ object.id_internal|static_picture:object.picture }}" class="img-responsive">
它输出了这个,但没有显示图片:
<img src="{% static "img/pictures/339-10026.jpg" %}" class="img-responsive">
路径正确且图片存在。我做错了什么?
答案 0 :(得分:1)
它不起作用,在评估{{}}之后,没有更多的评估。所以你看到字符串。 你需要编辑代码,
Jinja(模板翻译器从{{}} html代码创建)评估您的模板功能并将其插入到该位置。之后,django将此发送给浏览器:
<img src="{% static "img/pictures/339-10026.jpg" %}" class="img-responsive">
但浏览器不明白这一点。所以你必须在函数full_path中返回。
{%static ...%}只是在您的路径前面加上静态文件夹的路径。此路径在设置中可用。可以在django.conf的模块设置中访问设置。
from django.conf import settings
def static_picture(id_internal, picture):
if picture == 1:
return '"{}/img/pictures/{}.jpg"'.format(settings.STATIC_URL, id_internal)
else:
return '"{}/img/pictures/picture_missing.jpg"'.format(settings.STATIC_URL)
返回文件的完整路径
<img src="{{ object.id_internal|static_picture:object.picture }}" class="img-responsive">
<img src="path/to/static_folder/img/picturesXXX.jpg" class="img-responsive">