繁体   English   中英

如何在基本 html 模板中使用 {% load staticfiles%} 导入 js 文件

[英]How do you import a js file using {% load staticfiles%} in a base html template

使用 Django {% load staticfiles %} 我试图在我的 base.html 模板中加载一个 app.js 文件。

我在 StackOverflow 上看到了几个关于此的问题,我也尝试按照本教程进行操作: https : //www.techiediaries.com/javascript-tutorial/但实际上没有一个问题对我的问题有帮助。

这似乎也很奇怪,因为在开发工具上,我在 static/js/js.app 上看到了 200 GET,而当我真正打开路径时,javascript 就在那里。

此外,当我将 js 代码放在主体末尾的 a 中时,它似乎可以工作。 但我想从文件中加载 js。

以下是我尝试过的最新版本,但仍然没有运气。

基本文件

<!DOCTYPE html>
<html lang="en">
{% load staticfiles %}

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="favicon.ico">
    <link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
    <link href="{% static 'js/app.js' %}" rel="stylesheet">
    <link href="{% static 'css/main.css' %}" rel="stylesheet">


<body>

<div class="container">
    {% block content %}
    {% endblock content %}
</div>


<!-- jquery -->

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
        integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
        crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
        integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
        crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
        integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
        crossorigin="anonymous"></script>
<!-- jquery -->
</body>
</html>

设置.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

将以下脚本放在body标记之后。

<script type="text/javascript" src="{% static 'js/app.js' %}"></script>

为什么? 加载 JavaScript 文件时,它往往属于两种情况之一。

  1. JavaScript文件中包含有需要的功能,而页面正在加载
  2. Javascript 文件包含应在页面加载使用的函数。

结论
如果 JS 文件包含引用 HTML 元素的函数,那么你应该把它放在body标签之后,这样页面的 DOM 元素可以在脚本之前完成加载。 否则,将它放在head也有效。

PS - 您还应该考虑性能,因为在headbody之后导入JS 文件时在这方面存在差异

在我的</body>下方添加<script type="text/javascript" src="{% static 'js/app.js' %}"></script>解决了我无法加载 js 文件的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM