繁体   English   中英

如何将带有斜杠的字符串从视图传递到模板?

[英]How to pass a string with slashes from view to template?

为什么下面的代码给了我

SyntaxError:意外令牌:':'

每当调用test视图时,在浏览器的控制台中?

是因为JavaScripts将URL中的斜杠后的文本视为注释行吗​​?

我该如何解决这个问题?

风景:

 def test(request):
        context = {
            'url': 'https://www.google.com',
        }
        return render(request, 'explorer/test.html', context)

模板test.html

<script>    
  var url = {{ url }}    
  console.log(url)    
</script>

这是一个字符串,你只需要把它放在引号中。

var url = "{{ url }}";

可能最安全的解决方法是将其编码为JSON blob,然后使用safe模板过滤器确保Django不会转义字符串,如:

import json

def test(request):
        context = {
            'url': json.dumps('https://www.google.com'),
        }
        return render(request, 'explorer/test.html', context)

然后在模板中渲染它:

<script>
  var url = {{ url|safe }}    
  console.log(url)    
</script>

例如,如果您要转移的字符串将包含引号等,我们最终可能会提前终止字符串,使用json.dumps ,这是可以避免的,例如:

>>> json.dumps('"To be or not to be"')
'"\\"To be or not to be\\""'

所以现在我们有一些保证输出是一个有效的JavaScript对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM