无效的块标记预期为“空”或“结束”。尝试显示ImageField时出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无效的块标记预期为“空”或“结束”。尝试显示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>

因为你可以使用我正确使用语法,我supossed ...

这是来自我的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)

有人可以帮忙吗?谢谢!

答案

尝试使用{{ }}而不是{% %}

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

UPDATE。

在模板中:

<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

另一答案

问题解决了!如果有人想知道答案,我只需添加功能,我可以显示我的实际图像:

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

在我的urls.py中我添加了网址:

url(r'^home', index, name='home'), it: url(r'^preload/(?P<pk>d+)$', views.preload_image, name='preload_image'), 

最后我修改我的行以使用它与函数:

<img class="card-img-top" src="{% url 'home:preload_image' pk=articulo.pk %}" alt="">

非常感谢@SergeyRùdnev!

以上是关于无效的块标记预期为“空”或“结束”。尝试显示ImageField时出错的主要内容,如果未能解决你的问题,请参考以下文章

第 18 行的块标记无效:'endblock'、预期的 'endblock' 或 'endblock extra_js'

无效的块标记。您是不是忘记注册或加载此标签?

第 1 行的块标记无效:“设置”。您是不是忘记注册或加载此标签

无效的块标记“其他”。您是不是忘记注册或加载此标签?

无效的块标记:'endblock'。您是否忘记注册或加载此标记?

第 3 行的块标记无效:“原始”。您是不是忘记注册或加载此标签?使用 Django 1.9 和 Jinja2