【发布时间】:2013-08-22 07:30:44
【问题描述】:
我正在尝试在我的 jquery 脚本中使用 django 上下文变量。
首先,这个作品:
index.html
<head>
<script type="text/javascript">
var page_size = {{page_obj.paginator.num_pages}};
</script>
<script type="text/javascript" src="{% static 'js/paginate.js' %}"></script>
</head>
js/paginate.js
$(document).ready( function() {
alert(page_size); //THIS WORKS!!!
});
但是,我不希望用户能够查看我的变量,所以我只是在“paginate.js”文件中添加了全局变量声明:
index.html
<head>
<script type="text/javascript" src="{% static 'js/paginate.js' %}"></script>
</head>
js/paginate.js
var page_size = {{page_obj.paginator.num_pages}}; //Exactly the same as the above!!
$(document).ready( function() {
alert(page_size); //ERROR!!!
});
奇怪的是,这给了我一个错误:
SyntaxError: invalid property id
var page_size = {{page_obj.paginator.num_pages}};
我不知道为什么第一个有效,而第二个给我一个错误,因为它们完全相同......也许是因为我是第二个是 Jquery 中的声明..??有什么想法吗??
谢谢..
【问题讨论】:
-
static表示“恒定”。静态不是模板,它只是一个没有代码或变量的文件。您应该了解“包含”:docs.djangoproject.com/en/dev/ref/templates/builtins/#include -
不知道为什么您认为将声明放在单独的文件中意味着用户将无法查看您的变量,或者您为什么认为首先需要这样做。
-
此外,这被认为是一种非常糟糕的做法,因此再次强调它是轻描淡写的。您提供的 javascript 文件 DOES NOT 会通过任何 Django 处理器,以便了解模板上下文,此外,只需将您的 javascript 变量添加到新的 javascript 文件中,我仍然可以检查文件并查看您的变量。 (即,这不产生封装)。
-
@limelights 所以你的意思是我根本不应该在 JS 文件中使用 django 变量??
-
@limelights 当你说“这被认为是一种非常糟糕的做法”时,你指的是什么......?
标签: javascript jquery django