Django模板传递URL自动添加amp;,如何让URL原样输出?
解决Django模板中转义带签名URL的问题
Django模板默认会自动转义HTML特殊字符,导致你传递的带签名URL里的&被转成&,进而使URL失效。以下两种方法可以解决这个问题:
方法一:在模板中使用safe过滤器
直接在模板变量后添加|safe过滤器,明确告诉Django该URL内容是安全的,无需转义:
background-image:url({{ url|safe }});
方法二:在视图中标记URL为安全内容
如果这个URL需要在多个模板中复用,不想重复添加过滤器,可以在视图里用mark_safe函数将URL标记为安全字符串:
from django.utils.safestring import mark_safe context = {"url": mark_safe("https://fra1.digitaloceanspaces.com/logatta-space/organization_survey/static/img/page1-d.jpg?AWSAccessKeyId=DO00GN8LVUJB9VNAQL69&Signature=EM6bumz7gPzaPBPqHHdGfqBMVWk%3D&Expires=1670256832")} return render(request, 'index1.html', context)
之后在模板里直接使用{{ url }}就不会触发自动转义了。
内容的提问来源于stack exchange,提问作者Mohammad AlQudah
相关产品推荐
相关产品推荐

