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 文件的静态文件夹。

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)

在我的模板中: 这是 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 %}

我在

上有 "hello world"

http://127.0.0.1:8000/

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

我尝试了很多不同的东西,但我从来没有成功过

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' %}" 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 中一样。如果您有不属于任何特定应用程序但属于项目的静态文件,则需要明确添加该文件夹。请参阅我提到的文档页面上 'Configuring static files' 的第 4 点。

我是编程新手,因此请对我的观点持保留意见。我去了。也许你有更多的应用程序意味着你必须检查你的树,因为它应该像 django 文档指出的那样。 意思是你应该有 your_app/static/your_app/in 这里你必须再放三个对应 css 的文件夹,images 和 js 都有各自的文件。

另请注意,静态 url 的名称应不同于静态根。 完成此操作后,您必须告诉 django 在哪里可以找到每个应用程序的静态信息,因此您必须在 STATICFILES_DIRS.

中声明它

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

我仍然缺少将每个应用程序的 js 文件连接到模板的部分。所以我无法进一步帮助你,伙计......希望它能有点帮助

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

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

请检查documentation

在基本目录中创建名为 'static' 的目录。即与项目目录处于相似级别。 然后在 settings.py

中添加以下内容
STATIC_URL = '/static/'
#setting for static files
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) code here