2010-09-09 7 views
3

J'ai une question vraiment basique. J'essaie de construire des fonctionnalités AJAX dans un projet Django. Je prévois d'utiliser jQuery. En ce moment, je cours juste le code localement via Linux. J'ai testé un code here donc je suis raisonnablement certain que cela fonctionne. Mais j'ai du mal à trouver où placer le code source jQuery en combinaison avec mes paramètres.Charger jQuery dans Django

J'ai téléchargé jQuery et le mettre dans ce que je pense être mon dossier multimédia. Mon fichier settings.py se lit comme suit:

MEDIA_ROOT = os.path.join(PROJECT_DIR, 'books/media/')<br> 
MEDIA_URL = 'http://localhost:8000/books/media/' 

Dans mon modèle html, je fais référence:

<script type="text/javascript" src="/media/js/jquery-1.4.2.min.js"> 

Mais aucun de mes fonctions travaillent. Je suis sûr que c'est quelque chose de stupide et d'évident (bien que ce ne soit clairement pas évident pour moi). Comment puis-je me procurer correctement jQuery?

Répondre

6

Vous pouvez coder le lien sous

<script type="text/javascript" src="/books/media/js/jquery-1.4.2.min.js"> 

ou si vous restituez votre modèle avec un RequestContext et utiliser le processeur de contexte django.core.context_processors.media, vous pouvez accéder MEDIA_URL dans votre modèle.

<script type="text/javascript" src="{{ MEDIA_URL }}}js/jquery-1.4.2.min.js"> 
+0

génial!Toute idée pour laquelle cela fonctionne: mais ce n'est pas le cas:

+3

Vous ne pouvez pas avoir src et le code dans le tag de script en même temps. C'est juste la façon dont html est spécifié. Voir cette question stackoverflow: http://stackoverflow.com/questions/1056325/javascript-inline-script-with-src-attribute – Alasdair

3

Je crois que vous aurez besoin src="/books/media/js/jquery-1.4.2.min.js"

Aussi, bien que, je le fais thusly.

<script type="text/javascript" src="http://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
    google.load("jquery", "1.4"); 
</script> 
+0

Est-il préférable de le charger comme ceci ou de le télécharger dans mon propre répertoire? –

+0

Je préfère le faire de cette façon car il y a 1 fichier Javascript en moins à m'inquiéter et j'utilise google.load pour d'autres choses comme l'API maps. Vraiment, il n'y a rien de mal à le télécharger dans votre propre répertoire si vous préférez. –

+0

En théorie, il peut rendre votre site web plus rapide. Si un utilisateur accède au site Web A qui utilise Google pour héberger jQuery, puis visite votre site Web, alors jQuery est déjà dans le cache du navigateur, il n'a donc pas besoin d'être téléchargé à nouveau. – Alasdair

1

Pouvez-vous essayer ce qui suit:

  1. Accédez à l'URL http://localhost:8000/books/media/js/jquery-1.4.2.min.js en utilisant votre navigateur ou curl et voir ce qui se présente.

  2. Vérifiez votre configuration d'URL pour vous assurer que vous avez défini une URL pour le service de support à l'aide du service statique.

2

Vous devez configurer Django pour qu'il serve vos fichiers multimédias (sinon, servez-vous d'un serveur HTTP approprié). Ajoutez la ligne suivante à votre url.py:

(r'^mymedia/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), 

Assurez-vous de changer la partie mymedia à aligner avec votre répertoire de médias.

+0

qu'est-ce que cela signifie: pour servir des médias statiques? Et est-ce seulement nécessaire à partir d'un projet local? –

0

Étape1: Mettez votre jquery-2.0.3.js dans le sous-répertoire "static" de l'APP, par exemple "books/static/jquery-2.0.3.js";

Etape 2: config votre urls.py, ajoutez la ligne suivante:

r('^static/(?P<path>.*)$','django.views.static.serve'), 

Etape 3: dans votre fichier modèle, utilisez le fichier js comme suit:

<script type="text/javascript" src="/static/jquery-2.0.3.js"></script> 

Ce est tout.