python - Django - 传递给模板时修改了上下文
问题描述
我有一个返回 S3 对象的预签名 url 的函数,我想在我的模板中使用它。
这是我在views.py中的函数:
def player_index(request):
mpd_url = update_file.mpd_url()
vtt_url = update_file.vtt_url()
context = {
'mpd_url': mpd_url,
'vtt_url': vtt_url,
}
return render(request,'index.html',context)
这是我的模板的一部分,带有上下文:
var url = '{{ mpd_url }}';
player.vttThumbnails({
src: '{{ vtt_url }}'
});
但似乎 urls 在我的函数和模板中不匹配:当我在 views.py 中打印它时:https://realtime-video-logs.s3.amazonaws.com/test/manifest.mpd?AWSAccessKeyId=AKIAVT3T733IUIUYBBMB&Signature=ZA9mgVjXvBShKAdvjw6hgeOwC1o%3D&Expires=1563980730
在我的模板中:https://realtime-video-logs.s3.amazonaws.com/test/thumbs.vtt?AWSAccessKeyId=AKIAVT3T733IUIUYBBMB&Signature=jqDfi15GLB77DmzrNkVn743HPdA%3D&Expires=1563981729
'&' 替换为 ';' 我不明白为什么。
解决方案
这是合乎逻辑的,Django HTML 对字符串进行编码。例如,如果您的文本包含一个,&
那么 Django 会将其替换为&
,否则&
将不可见。
|safe
你可以通过应用模板过滤器 [Django-doc]来关闭它。然后 Django 将:
将字符串标记为在输出之前不需要进一步的 HTML 转义。当自动转义关闭时,此过滤器无效。
例如:
var url = '{{ mpd_url|safe }}';
player.vttThumbnails({
src: '{{ vtt_url|safe }}'
});
推荐阅读
- google-maps - 谷歌地图 JavaScript 街景错误
- scala - Scala Anorm 查询异常处理
- angular - Leaflet MarkerCluster removeOutsideVisibleBounds 不起作用
- c# - C# WPF - 类的数据绑定 ObservableCollection 的组合框
- python - 程序没有在python中打印结果就符合要求
- apache-spark - 从数据框中动态获取列,列名将出现在变量中
- python - 尝试学习json
- c# - 修改结构变量
- visual-foxpro - Windows 10 1803 的 VFP 网络问题
- reactjs - 如何将其孩子接受的仅限父母的道具传递给父母?