django如何在模板中包含javascript
Posted
技术标签:
【中文标题】django如何在模板中包含javascript【英文标题】:django how to include javascript in template 【发布时间】:2015-07-30 13:18:29 【问题描述】:我正在启动一个项目并遵循文档,但未能成功包含 javascript。
这是我的设置:
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
STATIC_ROOT = '/static/'
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
)
所以我在我的项目中创建了一个带有 javascript 文件的静态文件夹。
myproject/static/app.js
我的 urls.py:
urlpatterns = [
url(r'^$', 'app.views.home'),
url(r'^admin/', include(admin.site.urls)),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
在我的模板中: 这是我的项目/模板/base.html:
<!DOCTYPE html>
<head>
% load static %
<script src="% static 'app.js' %"></script>
<title>Site</title>
</head>
<body>
<img src="% static 'img.png' %" />
% block content %% endblock %
</body>
</html>
我的另一个模板:
% block content %
hello world
% endblock %
我有“hello world”
http://127.0.0.1:8000/
但我没有我的图像或脚本。
我尝试了很多不同的东西,但我从未成功
【问题讨论】:
在使用“静态”标签之前,请尝试使用完整的 url 获取文件(例如 /static/myproject/img.png)。这样你就可以通过 Django 找出你的文件所在的位置(有时会有点棘手)。 Django 文档提供了如何包含静态文件的指南,例如 JS docs.djangoproject.com/en/3.2/howto/static-files 【参考方案1】:urls.py
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
]
settings.py
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
STATIC_URL = '/static/'
# remove STATIC_ROOT
base.html
您的标题标签没有关闭。
<!DOCTYPE html>
<head>
% load static %
<script src="% static 'app.js' %"></script>
<title>Site</title>
</head>
<body>
<img src="% static 'img.png' %" />
% block content %% endblock %
</body>
</html>
【讨论】:
它没有用。我仍然没有包含 javascript 文件 设置 STATICFILES_DIRS = () 和 STATIC_ROOT = os.path.join(BASE_DIR, 'static') 让我们continue this discussion in chat.【参考方案2】:你的模板应该写成% load staticfiles %
而不是% load static %
来源: https://docs.djangoproject.com/en/1.8/howto/static-files/
此外,os.path.join(BASE_DIR, "static"),
仅在您的应用中查找静态文件,如 app/static/app/static.js
。如果您有不属于任何特定应用程序而是属于项目的静态文件,则需要显式添加该文件夹。请参阅我提到的文档页面上“配置静态文件”的第 4 点。
【讨论】:
我先按照文档进行操作,但没有成功。我尝试加载静态和加载静态文件,但它没有工作【参考方案3】:据我了解,STATICFILES_DIRS
应该在settings.py
中,并定义如下:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
请查看documentation。
【讨论】:
【参考方案4】:我是编程新手,因此我的观点是有把握的。我去。也许你有更多的应用程序意味着你必须检查你的树,因为它应该按照 django 文档点的方式进行。 这意味着你应该有 your_app/static/your_app/ 在这里你必须再放三个对应于css、images和js的文件夹以及它们各自的文件。
另外请注意,您的静态 url 的命名应该与您的静态根目录不同。 完成此操作后,您必须告诉 django 在哪里可以找到每个应用程序的静态数据,因此您必须在 STATICFILES_DIRS 中声明它。
在这一切之后,你必须运行 collectstatic 命令。
我仍然缺少将每个应用程序的 js 文件连接到模板的部分..所以我无法进一步帮助你老兄....希望它有点帮助
【讨论】:
【参考方案5】:在基目录中创建名为“static”的目录。即与项目目录处于相似级别。 然后在 settings.py 中添加以下内容
STATIC_URL = '/static/'
#setting for static files
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) code here
【讨论】:
以上是关于django如何在模板中包含javascript的主要内容,如果未能解决你的问题,请参考以下文章
如何在通过 pip 安装的应用程序中包含 django 模板?
如何在单独的 js 文件中使用访问 django 模板变量,而不是在同一个 html 文件中包含小脚本块?
在我的 django 模板中包含 CSS 和 Javascript [重复]