在我的模板中,我尝试添加一个带有图像输入的自定义标记,然后输出该图像以及描述它是高还是宽的类。
我的代码如下。
模板:
{% load custom_tags %}
{% image_size_class "MANAGEMENT/image.jpg" %}
自定义标记:
from django import template
from PIL import Image
from django.templatetags.static import static
register = template.Library()
@register.simple_tag
def image_size_class(pattern):
pattern_url = static(pattern)
img = Image.open(pattern_url)
width, height = img.size
if width > height:
class_tag = "wide"
else:
class_tag = "tall"
return '<img src="' + pattern_url + '"' + ' class="' + class_tag + '">'
期望的结果:
<img src="/static/MANAGEMENT/image.jpg" class="wide">
实际发生的是我从PIL得到错误:
[Errno 2] No such file or directory: u'/static/MANAGEMENT/image.jpg'
看起来PIL无法找到我想要的文件,但我不知道它在哪里看!非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
问题是PIL试图访问&#34; / static /&#34;磁盘上的文件夹。您应该给出文件的真实路径,如下所示:
import os
from django.conf import settings
...
@register.simple_tag
def image_size_class(pattern):
pattern_url = static(pattern)
file_path = os.join(settings.STATIC_ROOT, pattern)
img = Image.open(file_path)
width, height = img.size
if width > height:
class_tag = "wide"
else:
class_tag = "tall"
return '<img src="' + pattern_url + '"' + ' class="' + class_tag + '">'