你好!我正在使用会话系统来存储各种项目,如下所示:
请求会话在每个会话单元中,我都想存储一个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缩略图只适用于图像对象,但我只有url。
然后在模板中我尝试这个:
{% load thumbnail %}
{% thumbnail '{{item.imagen}}' '300x300' as im %}
<img class="im" style="width:100%;" src='{{ im.url }}'></img>
{% endthumbnail %}
因此,我有一个404未找到的图像,在缓存中的路径如下:media/cache/31/a0/31a02cc7b19899a208a972a08e17fe12.jpg到一个未创建的文件。
作为一个注释,当我将thummail与存储的经典django对象和图像一起使用时,它是有效的,所以我认为这不是媒体和静态路由或memcached的问题。
我能做些什么来解决这个问题,并在会话系统中显示来自url的缩略图?
我最终在视图中使用sorl缩略图来解决它。当我创建会话对象时,我修改了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,
}
现在它工作了,安全系统继续强大的