如何显示存储在 Django 会话系统中的本地 url 的缩略图?
Posted
技术标签:
【中文标题】如何显示存储在 Django 会话系统中的本地 url 的缩略图?【英文标题】:how to show thumbnail images from a local url stored in session system in Django? 【发布时间】:2021-04-09 21:39:33 【问题描述】:Django 3 + sorl-thumbnail 12.7.0
你好!我正在使用会话系统来存储这样的各种项目:
request.session['cart'][1] request.session['cart'][2] ... request.session['cart'][n]在每个会话单元中,我想存储 product.image.url 和产品的其他字段:
request.session.setdefault('cart', )[str(request.session['counter'])] =
'producto': p.pk,
'talla': talla,
'cantidad': cantidad,
'producto_abstracto': p.producto_abstracto.pk,
'imagen': p.imagen_1.url,
'nombre': p.producto_abstracto.nombre_producto,
'marca': p.producto_abstracto.marca.marca,
'precio_venta':p.producto_abstracto.precio_venta,
'nombre_color':p.color_principal_id.nombre,
'color': p.color_principal_id.codigo,
(出于安全考虑,我不能使用 pickleserializer 在会话中存储完整的对象 Product)。然后我想在视图中将 product.image 显示为缩略图,但这就是问题所在。似乎 sorl-thumbnail 只适用于图像对象,但我只有 url。
然后在模板中我试试这个:
% load thumbnail %
% thumbnail 'item.imagen' '300x300' as im %
<img class="im" style="width:100%;" src=' im.url '></img>
% endthumbnail %
因此,我有一个 404 not found 图像,缓存中的路径如下:media/cache/31/a0/31a02cc7b19899a208a972a08e17fe12.jpg 到一个未创建的文件。
作为评论,当我将缩略图与经典 django 对象和存储的图像一起使用时,它可以工作,所以我认为这不是媒体和静态路由或 memcached 的问题。
我可以做些什么来解决这个问题并在会话系统中显示来自 url 的缩略图?
【问题讨论】:
【参考方案1】:我终于在视图中使用 sorl-thumbnail 解决了它。当我创建会话对象时,我修改了 url 的存储方式:
from sorl.thumbnail import get_thumbnail
request.session.setdefault('cart', )[str(request.session['counter'])] =
'producto': p.pk,
'talla': talla,
'cantidad': cantidad,
'producto_abstracto': p.producto_abstracto.pk,
'imagen': get_thumbnail(p.imagen_1, '300x300').url,
'nombre': p.producto_abstracto.nombre_producto,
'marca': p.producto_abstracto.marca.marca,
'precio_venta':p.producto_abstracto.precio_venta,
'nombre_color':p.color_principal_id.nombre,
'color': p.color_principal_id.codigo,
现在它可以工作了,安全系统继续强大
【讨论】:
以上是关于如何显示存储在 Django 会话系统中的本地 url 的缩略图?的主要内容,如果未能解决你的问题,请参考以下文章