[英]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 文件时,它往往属于两种情况之一。
结论
如果 JS 文件包含引用 HTML 元素的函数,那么你应该把它放在body
标签之后,这样页面的 DOM 元素可以在脚本之前完成加载。 否则,将它放在head
也有效。
PS - 您还应该考虑性能,因为在head
和body
之后导入JS 文件时在这方面存在差异
在我的</body>
下方添加<script type="text/javascript" src="{% static 'js/app.js' %}"></script>
解决了我无法加载 js 文件的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.