我有一堆画布需要渲染。我不想把 JavaScript代码在python循环中,因为我觉得这是一种不好的做法
home.html
{% load staticfiles %}
<head>
<script type="text/javascript" src="{% static
'canvas/canvasrender.js' %}"></script>
</head>
{% for canvas in user_canvas_set %}
<canvas class = "canvas" id="{{canvas.id}}" width="400" height="200"
canvas_post= ""{{canvas.canvas_post}}"" >
Your browser does not support the HTML5 canvas tag.</canvas>
**<script>
canvasrenderNP.canvaswrite("{{canvas.id}}","{{canvas.canvas_post}}")
</script>**
{% endfor %}
我创建了一个自定义函数,返回用户画布id的数组,因为我使用画布id作为画布元素的id。在
home.html
我得到所需的输出:
[247, 248, 251, 252]
当我把这个放到一个静态文件中时
canvasrender.js
alert("{{user_canvas_ids}}")
然后加载到
home.html
{% load staticfiles %}
<head>
<script type="text/javascript" src="{% static
'canvas/canvasrender.js' %}"></script>
</head>
输出:
"{{user_canvas_ids}}"
我很困惑到底发生了什么事。我以为script标记在“<script> </script>
”之间插入了js文件
我知道我可以创建一个像这样的元素并获得属性,但我觉得这不是一个好的实践,还是可以?在
<p id="canvas_ids" canvas_ids ="{{user_canvas_ids}}"> </p >
还有什么可以避免编写JavaScript代码的吗 在HTML文件中?在
为什么这不是一个重复的问题。它没有说明为什么html页面中的链接js文件不能保持对python变量的引用。但是如果JavaScript是在html页面中编码的,它可以
有点,但是这是在客户端完成的,浏览器不知道Django模板中大括号的特殊含义。在
而
static
在Django的上下文中只意味着:Django按原样服务该文件,而不通过模板引擎运行它。(这在这里没有任何帮助,对于单独的JavaScript文件,user_canvas_ids
的值将是未知的,因此模板引擎无法替换任何有用的值。)正如您在自己的评论中提到的,您可以将
user_canvas_id
保存在home.html
中的js变量中,并在js文件中访问它。像这样:相关问题 更多 >
编程相关推荐