Django模板图片无法加载:URL转义引发的问题
解决Django模板中S3带签名URL转义导致图片无法加载的问题
Django模板默认会对变量内容进行HTML转义,将&这类特殊字符转换为&,这会导致带签名的S3 URL中的参数被破坏,最终图片无法加载。
解决方案
方法1:在模板中使用safe过滤器
直接在模板变量后添加safe过滤器,告知Django该URL无需转义:
<img src="{{ data.image.path|safe }}">
方法2:在视图层标记URL为安全字符串
如果该URL需要在多个模板位置使用,可以在视图中用mark_safe标记它为安全内容,避免重复添加过滤器:
from django.utils.safestring import mark_safe # 将S3 URL标记为安全字符串 data.image.path = mark_safe(data.image.path) params = { 'obj': obj, 'data': data, } return render_to_string('records/record.html', params), obj
两种方法都能有效阻止Django对URL中的&进行转义,确保带签名的S3 URL能正常被浏览器解析,图片顺利加载。
内容的提问来源于stack exchange,提问作者Anoop
相关产品推荐
相关产品推荐

