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

2024-05-14 14:00:45 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么下面的代码

SyntaxError: unexpected token: ':'

在浏览器的控制台中调用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>

Tags: 代码testtoken视图urlrequesthtmlcontext
2条回答

解决这个问题最安全的方法可能是将其编码为JSON blob,然后使用^{}模板过滤器确保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对象。你知道吗

它是一个字符串,你只需要把它放在引号里。你知道吗

var url = "{{ url }}";

相关问题 更多 >

    热门问题