开发者问题收集

单独文件中的 Javascript 在 Django 中不起作用

2020-01-27
87

我对 python 和 Django 比较陌生,但对 Javascript/jQuery 更有经验。我现在正在使用 Django,并希望在我的 base.html 模板中包含 javascript。我已包含指向 jQuery cdn 的链接。head 部分如下所示:

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Interceptie kennisbank</title>

    <link rel="stylesheet" href={% static "css/reset.css" %}>
    <link rel="stylesheet" href={% static "css/style.css" %}>

    <!-- link to jQuery: -->
    <script
        src="https://code.jquery.com/jquery-3.4.1.min.js"
        integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
        crossorigin="anonymous">
    </script>

    <!-- javascript event handlers: -->
    <script type="text/javascript" href={% static "js/events.js" %}></script>
</head>

在 Chrome 中转到页面源代码时,我可以单击指向 /static/js/events.js 的链接,该文件的源代码将显示出来。

在此处输入图像描述

这证明 javascript 已正确包含,不是吗?但从未触发加载事件,控制台中也未记录任何内容。我尝试将 js 文件的链接放在正文底部,但同样不起作用。

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Interceptie kennisbank</title>

    <link rel="stylesheet" href={% static "css/reset.css" %}>
    <link rel="stylesheet" href={% static "css/style.css" %}>

    <!-- link to jQuery: -->
    <script
        src="https://code.jquery.com/jquery-3.4.1.min.js"
        integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
        crossorigin="anonymous">
    </script>

    <script>
        jQuery( window ).on( 'load', function(){
            console.log('3. Javascript geladen');
        });
    </script>

    <!-- javascript event handlers: -->
    <script type="text/javascript" href={% static "js/events.js" %}></script>
</head>

当我将脚本本身添加到 base.html 时,它确实起作用了。当我将其放在标题中时,它起作用,当我将其放在正文中时,它起作用。

当然,我更喜欢将我的 javascript 放在单独的文件中。有人可以解释一下这个问题吗?

1个回答
<script type="text/javascript" src="{% static 'js/events.js' %}"></script>

按照上述方法更正您的代码,并在文件顶部添加 {% load static % (如果不存在)。类似的模式也适用于 css 链接

bmons
2020-01-27