为什么下面的代码给了我
每次调用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>
答案 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对象。