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' %}"></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 中声明......??有什么想法吗??

谢谢..

最佳答案

TL;DR

您无法将变量传递给静态文件,因为它们不会被 Django 模板处理器解析。

说明

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

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

那该怎么做呢?

您可以通过 Javascript 文件中的 AJAX 请求获取数据(警告:对于您的情况来说有点过分),或者使用您的第一种方法。

相关主题:

关于javascript - 在 Jquery 中定义 Django 上下文变量给我错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18331811/

相关文章:

javascript - ScrollMagic 引脚在 TimelineMax 中不起作用

javascript - 如何使用 Rhino 实现用于远程 JavaScript 调试的 intelliJ IDEA 插件?

javascript - 如何使用 Valums Ajax File-Uploader 触发上传文件?

javascript - Jquery字符串替换,仅替换数组的开头

django - 使用 gunicorn 和 nginx 部署 Django

django - 序列化器处理嵌套对象

python - Heroku 上的基本 Django 静态文件部署

javascript - 当我只上传一次时,图像在表格中插入了两次

javascript - 从指令访问 Controller 功能

javascript - 如何根据位置选择元素?