django如何在模板中包含javascript

时间:2015-05-18 21:45:12

标签: javascript python django static include

我正在开始一个项目并按照文档说明我没有成功包含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的/静态/ app.js

my 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 %}

我有&#34;你好世界&#34;在

  

http://127.0.0.1:8000/

但我没有我的形象或剧本。

我尝试了很多不同的东西,但我从未成功

4 个答案:

答案 0 :(得分:16)

<强> 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>

答案 1 :(得分:1)

根据我的理解,STATICFILES_DIRS应该位于settings.py中,并按以下方式进行定义:

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

请检查documentation

答案 2 :(得分:0)

您的模板应该说{% 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中所示。如果您的静态文件不属于任何特定应用程序,而是属于项目,则需要显式添加该文件夹。请参阅&#39;配置静态文件&#39;的第4点。在我提到的文档页面上。

答案 3 :(得分:0)

我是程序设计的新手,因此请捏一点盐。我去也许您有更多的应用程序,这意味着您必须按照Django文档的指示检查树,因为它应该走。 这意味着您应该在此处添加your_app / static / your_app /,并且必须再添加三个分别与css,image和js对应的文件夹以及各自的文件。

还请注意,您的静态网址应命名为与静态根目录不同。 完成此操作后,您必须告诉django在哪里可以找到每个应用程序的静态信息,因此必须在STATICFILES_DIRS中声明它。

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

我仍然缺少将每个应用程序的js文件连接到模板的部分。.所以我无法进一步帮助您花花公子..希望对您有所帮助