Javascript 在Jquery中定义Django上下文变量时出错?

Javascript 在Jquery中定义Django上下文变量时出错?,javascript,jquery,django,Javascript,Jquery,Django,我试图在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

我试图在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>
<head>
    <script type="text/javascript" src="{% static 'js/paginate.js' %}"></script>
</head>


但是,我不希望用户能够查看我的变量,所以我只是在我的“paginate.js”文件中添加了全局变量声明:

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>
<head>
    <script type="text/javascript" src="{% static 'js/paginate.js' %}"></script>
</head>

奇怪的是,这给了我一个错误:

SyntaxError: invalid property id
    var page_size = {{page_obj.paginator.num_pages}};
我不知道为什么第一个有效,而第二个给我一个错误,因为它们完全相同。。。也许因为我是第二个在Jquery中声明的人。。??有什么想法吗


谢谢..

在Django中,如果我们需要将变量从视图传递到JS/html文件,我们必须确保该文件由Django模板引擎解析。换句话说,文件必须由Django提供

而在这里,服务器上的Django模板处理器不处理包含的Javascript,因此这不起作用

如果需要传递要在JS文件中使用的模板变量,则必须使用问题中提到的第一种方法,即创建一个小的
块,其中一些全局变量被声明为包含这些模板变量。然后,任何JS文件都可以通过查找全局JS变量来获取值。

TL;博士 无法将变量传递给静态文件,因为Django模板处理器没有解析这些文件

解释 第一个示例之所以有效,是因为您在模板中设置了
{{page_obj.paginator.num_pages}
,它将被解析并转换为一个数字。使用Django返回模板时(通过任何
render
方法),将只渲染模板。模板中链接的CSS和Javascript称为静态文件:这意味着它们是Django模板处理器无法读取的资源

假设您想在页面的img中插入变量。这有什么意义吗?不然而,这是同样的行为

那怎么办呢? 您可以通过Javascript文件中的AJAX请求获取数据(警告:对于您的情况,这里有点过分),也可以使用第一种方法

相关主题:


静态
表示“恒定”。Static不是一个模板,它只是一个没有代码或变量的文件。您应该了解“包含”:并且不确定为什么您认为将声明放在单独的文件中意味着用户将无法查看您的变量,或者为什么您认为这样做首先是可取的。此外,这被认为是一种非常糟糕的做法,再次强调它将是一种轻描淡写的做法。您提供的javascript文件不会经过任何Django处理器,以便了解模板上下文,更进一步,只需将您的javascript变量添加到新的javascript文件中,我仍然可以检查该文件并查看您的变量。(也就是说,这不会产生封装)。@limelights那么你的意思是我根本不应该在JS文件中使用django变量???@limelights当你说“这被认为是一种很糟糕的做法”时,你指的到底是什么。。?