繁体   English   中英

django 如何在模板中包含 javascript

[英]django how to include javascript in template

我正在开始一个项目并按照文档我没有成功地包含 javascript。

这是我的设置:

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

STATIC_ROOT = '/static/'

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'templates'),
)

所以我在我的项目中创建了一个带有 javascript 文件的静态文件夹。

我的项目/静态/ 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)

在我的模板中:这是 myproject/templates/base.html:

<!DOCTYPE html>
<head>
  {% load static %}
  <script src="{% static 'app.js' %}"></script>   
  <title>Site</title>
</head>
<body>
<img src="{% static 'img.png' %}" alt="Mon image" />
  {% block content %}{% endblock %}
</body>
</html>

我的另一个模板:

{% block content %}
    hello world
{% endblock %}

我打开了“你好世界”

http://127.0.0.1:8000/

但我没有我的图像或脚本。

我尝试了很多不同的事情,但我从未成功

网址.py

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
]

设置.py

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

STATIC_URL = '/static/'

# remove STATIC_ROOT

基本文件

您的标题标签未关闭。

<!DOCTYPE html>
<head>
  {% load static %}
  <script src="{% static 'app.js' %}"></script>   
  <title>Site</title>
</head>
<body>
<img src="{% static 'img.png' %}" alt="Mon image" />
  {% block content %}{% endblock %}
</body>
</html>

你的模板应该说{% 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 点。

根据我的理解, STATICFILES_DIRS应该在settings.py并定义如下:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

请检查文档

我是编程新手,因此请稍加保留我的观点。 我去。 也许你有更多的应用程序意味着你必须检查你的树,因为它应该按照 django 文档的要点进行。 这意味着你应该有 your_app/static/your_app/ 在这里你必须再放三个对应于 css、images 和 js 的文件夹以及它们各自的文件。

另请注意,您的静态 url 应命名为与静态根不同的名称。 完成此操作后,您必须告诉 django 在哪里可以找到每个应用程序的静态数据,因此您必须在 STATICFILES_DIRS 中声明它。

完成所有这些之后,您必须运行 collectstatic 命令。

我仍然缺少将每个应用程序的 js 文件连接到模板的部分。

Create directory named 'static' at base directory. i.e. at similar level to project directory.
Then add following in settings.py

STATIC_URL = '/static/'
#setting for static files
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) code here

暂无
暂无

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

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