2015-06-23 16 views
0

我有一堆需要渲染的画布。我不想把 JavaScript代码在Python循环,因为我觉得这是Django:如何在使用python变量时将JavaScript代码在静态文件夹中分开

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 %} 

我做了返回用户的数组帆布IDS自定义功能不好的做法,因为我使用画布ID作为画布元素的ID。

home.html

<script> 
     alert("{{user_canvas_ids}}") 
</script> 

我得到所需的输出:

[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}}" 

我很困惑为正在发生的事情。我认为脚本标签插入js文件之间的“<script> </script>

我知道我可以做一个这样的元素,并获得属性,但我觉得这不是好习惯,或者它是好的?

<p id="canvas_ids" canvas_ids ="{{user_canvas_ids}}"> </p > 

还有什么我能做的,使我能够避免在HTML文件中编写JavaScript代码 ?

为什么这不是一个重复的问题。它没有任何关于为什么html页面中的链接js文件无法保持对python变量的引用。但是,如果JavaScript被编码在html页面中,它可以

+0

可能重复(http://stackoverflow.com/questions/298772/django-template-variables-and-javascript) – Filly

+0

我检查出来,并它没有任何关于为什么html页面中的链接js文件无法保持对python变量的引用。但是,如果JavaScript是在html页面中编码的,它可以。 – user3369264

回答

-1

我很困惑,因为发生了什么事情。我认为,脚本标记插入JS文件中的“<script> </script>

还挺之间,但这样做的客户端,通过谁没有关于Django模板大括号的特殊含义的想法浏览器。

和Django上下文中的static意味着:Django按原样服务该文件,而不通过模板引擎运行。 (无论如何,这对此无济于事,至于JavaScript文件的孤立,user_canvas_ids的值是未知的,所以模板引擎不能替代对它有用的任何东西。)

+0

如果我将id保存在elements属性中,然后通过我隔离的js文件访问它,还是有更好的解决方案,会不会好? – user3369264

+1

这可能是好的。另一种方法是通过另一个视图(例如JSON)为这些ID提供服务,并让Java脚本中的代码获取它们。 –

+0

哪个选项更好,很难说。即使内联的JavaScript剪切你想要避免恕我直言并不是太糟糕,只要它保持简单。 –

2

正如你在你自己的评论中提到的,您可以将user_canvas_id保存在home.html的js变量中,然后在您的js文件中对其进行访问。事情是这样的:Django的模板变量和Javascript]的

<head> 
    <script>var user_canvas_id = "{{ user_canvas_id }}"</script> 
    <script type="text/javascript" src="{% static 'canvas/canvasrender.js' %}"></script> 
</head> 
+0

canvasrender.js应该如何正确工作?他不能使用他目前的... – YPCrumble

相关问题