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

时间:2018-12-27 21:03:14

标签: python django

为什么下面的代码给了我

  

SyntaxError:意外令牌:':'

每次调用test视图时,是否在浏览器的控制台中

是因为JavaScript在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>

2 个答案:

答案 0 :(得分:2)

这是一个字符串,您只需将其用引号引起来。

var url = "{{ url }}";

答案 1 :(得分:1)

解决此问题的最安全方法可能是将其编码为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对象。