web-dev-qa-db-fra.com

django comment inclure javascript dans un template

Je commence un projet et suite à la documentation, je n'ai pas réussi à inclure javascript.

Voici mes paramètres:

STATIC_URL = '/static/'

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

STATIC_ROOT = '/static/'

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

J'ai donc un dossier statique créé dans mon projet avec un fichier javascript.

monprojet/static/app.js

mes urls.py:

urlpatterns = [
    url(r'^$', 'app.views.home'),
    url(r'^admin/', include(admin.site.urls)),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

et dans mon modèle: voici mon projet/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>

Mon autre modèle:

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

J'ai le "bonjour le monde" sur

http://127.0.0.1:8000/

mais je n'ai pas mon image ou script.

J'ai essayé tellement de choses différentes mais je n'y arrive jamais

4
BoumTAC

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

Votre balise de titre n'était pas fermée.

<!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>
14
Charlesthk

Votre modèle devrait indiquer {% load staticfiles %} au lieu de {% load static %}

Source: https://docs.djangoproject.com/fr/1.8/howto/static-files/

En outre, os.path.join(BASE_DIR, "static"), ne recherche que les fichiers statiques dans vos applications, comme dans app/static/app/static.js. Si vous avez des fichiers statiques qui n'appartiennent à aucune application spécifique, mais plutôt au projet, vous devez ajouter le dossier explicitement. Voir le point 4 de 'Configuration de fichiers statiques' sur la page de documentation que j'ai mentionnée.

0
Jorick Spitzen