在 django javascript 文件中引用其他静态文件
Reference other static file in django javascript file
我需要将文件加载到函数中以与电话自动格式化程序库一起使用 (Intl tel input)
当我在独立 html 页面中尝试此操作时,它工作正常,但是当我尝试在 django 项目中执行此操作时,文件没有加载,我认为这是因为它找不到它的位置在路径中。
main.js 和 utils.js 都在我项目的静态目录中,所以我不确定为什么找不到 utils.js 文件。
main.js:
$(document).ready(function() {
$("#phoneNumber").intlTelInput({
utilsScript: "utils.js"
});
});
如果我需要在 JavaScript 中引用服务器端路径,我会在最上面的模板中设置一个 "app" 对象,我可以在 JavaScript 中引用它之后加载的文件,通常带有 require.js.
示例:
# base.html (upper-most template)
<!DOCTYPE html>{% load static from staticfiles %}
<html>
<head>. . .</head>
<body>
. . .
<script>
var myApp = {
staticUrl: '{{ STATIC_URL }}'
}
</script>
<script src="{% static 'js/some-file.js' %}"></script>
</body>
</html>
# some-file.js
'use strict';
$(document).ready(function(){
console.log(myApp.staticUrl);
});
查看您的 URL 调度程序 (urls.py
) 以查看可能请求静态文件的实际路径是什么。
例如,在我的一个项目中,JavaScript 个文件位于 /static/js/
。
例如,如果您的配置也是如此,您会做 -
$(document).ready(function() {
$("#phoneNumber").intlTelInput({
utilsScript: "/static/js/utils.js"
});
});
如果您想对 URL 进行硬编码,那就是这样。您可以在模板中或在模板引擎未处理的 .js 文件中执行此操作。
但是,如果您在模板中,我建议您使用 staticfiles app,特别是 static
模板标签,它可以帮助您构建文件路径。
我需要将文件加载到函数中以与电话自动格式化程序库一起使用 (Intl tel input) 当我在独立 html 页面中尝试此操作时,它工作正常,但是当我尝试在 django 项目中执行此操作时,文件没有加载,我认为这是因为它找不到它的位置在路径中。
main.js 和 utils.js 都在我项目的静态目录中,所以我不确定为什么找不到 utils.js 文件。
main.js:
$(document).ready(function() {
$("#phoneNumber").intlTelInput({
utilsScript: "utils.js"
});
});
如果我需要在 JavaScript 中引用服务器端路径,我会在最上面的模板中设置一个 "app" 对象,我可以在 JavaScript 中引用它之后加载的文件,通常带有 require.js.
示例:
# base.html (upper-most template)
<!DOCTYPE html>{% load static from staticfiles %}
<html>
<head>. . .</head>
<body>
. . .
<script>
var myApp = {
staticUrl: '{{ STATIC_URL }}'
}
</script>
<script src="{% static 'js/some-file.js' %}"></script>
</body>
</html>
# some-file.js
'use strict';
$(document).ready(function(){
console.log(myApp.staticUrl);
});
查看您的 URL 调度程序 (urls.py
) 以查看可能请求静态文件的实际路径是什么。
例如,在我的一个项目中,JavaScript 个文件位于 /static/js/
。
例如,如果您的配置也是如此,您会做 -
$(document).ready(function() {
$("#phoneNumber").intlTelInput({
utilsScript: "/static/js/utils.js"
});
});
如果您想对 URL 进行硬编码,那就是这样。您可以在模板中或在模板引擎未处理的 .js 文件中执行此操作。
但是,如果您在模板中,我建议您使用 staticfiles app,特别是 static
模板标签,它可以帮助您构建文件路径。