2010-11-20 1 views
4

J'apprends Django pour l'un de mes projets web. Face à des difficultés pour ajouter css, fichier jquery dans mon projet. Le modèle est très simple et ne doit pas utiliser extends.Juste un formulaire de page. Ce que je l'ai fait de déclarer mon fichier multimédia: Dans le fichier settings.py: chemin Ajouté:Comment puis-je ajouter des fichiers css et jquery dans mon projet django?

`import os 

def path(*x): 
    return os.path.join(os.path.abspath(os.path.dirname(__file__)), *x) 

` ensuite ajouté:

MEDIA_ROOT = path('media') #media is my folder where all the css,js file are 
MEDIA_URL = '/media/' 
ADMIN_MEDIA_PREFIX = '/media/' 
TEMPLATE_DIRS = (
    path('templates') 

Dans le fichier urls.py ajouté:

from django.conf import settings 
urlpatterns = patterns('', 
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', { 'document_root' : settings.MEDIA_ROOT }), 

Dans le fichier modèle que je l'ai essayé avec tous ces types de déclarations:

<script type="text/javascript" src="/media/jquery.min.js"></script> 
    <script type="text/javascript" src="/media/site.js"></script> 
    <link rel="stylesheet" type="text/css" media="screen" href="/media/screen.css" /> 
    <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}test.css" /> 
<link rel="stylesheet" type="text/css" media="screen" href="../media/screen.css" /> 

Mais quand je charge le fichier de modèle comme html simple:

<script type="text/javascript" src="../media/jquery.min.js"></script> 
    <script type="text/javascript" src="../media/site.js"></script> 
<link rel="stylesheet" type="text/css" media="screen" href="../media/screen.css" /> 

Ce worked.But je dois intégrer dans mon projet Django. Hope obtenir la navigation et le résoudre :) Merci

+1

Vos 'MEDIA_URL' et' ADMIN_MEDIA_PREFIX' sont identiques. Puisque 'runserver' sert automatiquement l'administration des médias, c'est probablement la source de vos problèmes. Essayez de définir 'ADMIN_MEDIA_PREFIX' sur autre chose, comme'/media/admin/'. – eternicode

Répondre

2

Ma structure dir est la suivante:

|-- test_form 
|-- /settings.py 
|-- /urls.py 
|-- /media 
| '-- test.css 
'-- /templates 
    '-- ... 

Et j'ai ajouté la syntaxe suivante dans mon fichier template.html:

<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}test.css" /> 

Je suis confus où le problème est.

6

La syntaxe correcte est dans la liste des choses que vous avez essayé sans succès:

<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}test.css" /> 

Si vous définissez votre MEDIA_URL comme «/media/», puis ce lien va fonctionner pour être /media/test.css.

A condition que vous avez la structure de répertoire suivant:

my_project 
    |-- settings.py 
    |-- urls.py 
    |-- media 
     |-- test.css 

Je vérifier tous vos noms de fichiers et de répertoires, assurez-vous que vous n'avez pas de slash errantes/extra, etc.

Aussi, je présume que "test.css" était censé être "screen.css" comme c'était le cas dans tous vos autres exemples ...

Mais fondamentalement, en utilisant un chemin d'URL absolu (commençant par le slash pour l'indiquer résout de la racine du site) fonctionnera exactement le même que l'aide un chemin relatif (../) tant que vous avez réellement vos fichiers au bon endroit. Alors ce que vous avez travaillera.

2

Je pense que dans le urls.py, vous auriez pu manquer le url dans le urlpatterns, à savoir:

urlpatterns = patterns ('', url (r^médias/(P?. *) $ ',' django.views.static.serve ', {' document_root ': paramètres.MEDIA_ROOT}),

Questions connexes