web-dev-qa-db-ja.com

djangoテンプレートにjavascriptを含める方法

私はプロジェクトを始めて、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 %}

「ハローワールド」があります

http://127.0.0.1:8000/

しかし、私は自分の画像やスクリプトを持っていません。

いろいろなことを試しましたが、成功することはありません

8
BoumTAC

rls.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>
19
Charlesthk

テンプレートは_{% 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を参照してください。

0
Jorick Spitzen