首页 > 解决方案 > 无效的块标记应为“空”或“endfor”。尝试显示 ImageField 时出错

问题描述

我尝试使用枕头库中的 ImageField。我有一个问题。

当我尝试显示我的图像时,我收到错误:

/home 处的 TemplateSyntaxError 第 62 行上的无效块标记:“articulo.nombre_imagen.url”,预期为“空”或“endfor”。您是否忘记注册或加载此标签?

这是我的第 62 行:

<a href="article/id/{{articulo.id}}"><img class="card-img-top" img src="{% articulo.nombre_imagen.url %}" alt=""></a>

正如您可以使用的那样,我正确使用了语法,我想...

这是来自我的models.py:

def upload_location(instance, filename):
return "static/img/" %(instance.id, filename)

class Articulo(models.Model):

nombre_imagen=models.ImageField(upload_to=upload_location,
    null=True, blank=True, 
    width_field="width_field", 
    height_field="height_field")
width_field=models.IntegerField(default=0)
height_field=models.IntegerField(default=0)

任何人都可以帮忙吗?谢谢!

标签: pythondjangoimageblockimagefield

解决方案


尝试{{ }}改用{% %}

<a href="article/id/{{ articulo.id }}"><img class="card-img-top" src="{{ articulo.nombre_imagen.url }}" alt=""></a>

更新。

在模板中:

<a href="article/id/{{ articulo.id }}"><img class="card-img-top" src="{% url 'preload_image' pk=articulo.pk %}" alt=""></a>

在视图中:

def preload_image(request, pk)
    from .models import Articulo
    from django.http import HttpResponse
    from PIL import Image

    articulo = get_object_or_404(Articulo, pk=pk)

    img = Image.open(articulo.nombre_imagen.path)
    response = HttpResponse(content_type='image/%s' % img.format)
    img.save(response, img.format)
    response['Content-Disposition'] = 'filename="image.%s"' % img.format
    return response

将该方法也插入preload_image到 urls.py;以及在哪里from .models使用你的from APPNAME.models.


推荐阅读