web-dev-qa-db-fra.com

Comment utiliser les CSS dans Django?

Je crée mon application avec Django et je me demande comment je peux faire en sorte que Django utilise mon fichier CSS. Quels paramètres dois-je faire pour que Django voie le fichier css?

NB: Sur une machine locale

108
gath

Si vous utilisez le serveur de développement, suivez le guide du projet Django pour la gestion de fichiers statiques pour configurer vos URL, puis référencez vos fichiers multimédia dans le modèle - par exemple, une image dans un dossier d’images à partir de /site_media/images/foo.gif.

48
Joe

Plus généralement, vous demandez comment servir un fichier statique à partir de Django. Si vous utilisez Apache, vous devriez lire http://docs.djangoproject.com/en/dev/howto/deployment/modpython/

Si vous utilisez le serveur de développement (par exemple, sur votre ordinateur portable), lisez http://docs.djangoproject.com/en/dev/howto/static-files/

Prenez note du big, fat disclaimer concernant le serveur de développement Django:

  • L'utilisation de ce serveur est inefficace et peu sûre.
  • Ne l'utilisez pas dans un contexte de production.
  • Utilisez ceci uniquement pour le développement.
36
Peter Rowell

Cela m'a aussi causé des problèmes pendant un certain temps (404 erreurs non trouvées). Le bit qui me manquait était de modifier le STATICFILES_DIRS Tuple dans settings.py pour me donner ceci:

STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/Django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(os.path.dirname(__file__),'media').replace('\\','/'),
)

Cela a ensuite récupéré mes fichiers CSS dans un dossier appelé 'media' qui se trouvait au plus haut niveau de mon projet Django.

J'ai aussi eu:

MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/media/'

(assurez-vous que vous avez le / en tête dans STATIC_URL)

Bien sûr, comme indiqué ci-dessus, vous devez inclure correctement le fichier CSS dans vos fichiers HTML. J'ai eu:

<link href="{{ STATIC_URL }}css/ea_base.css" rel="stylesheet" type="text/css" media="screen" />
13
jacanterbury

Quels paramètres dois-je faire pour que Django voie le fichier css?

Aucun.

Assurez-vous que votre modèle comprend le fichier CSS (comme le HTML standard) et placez le fichier CSS sur le serveur de médias.

Pour clarifier: avec Django, il est fortement recommandé de servir tous vos médias (tout ce qui n'est pas du code HTML dynamique) à partir d'une instance de serveur différente. La façon dont vous l'implémentez dépend entièrement de vous, mais la plupart des gens créent un sous-domaine.

12
Oli

Les documents officiels de Django ne m'ont pas aidé. J'espère que l'article du blog " Django: Comment servir des fichiers statiques " aide certains d'entre vous.

8
James Selvakumar

Le moyen le plus simple d’utiliser css avec Django est de l’ajouter à vos modèles sous forme de fichiers statiques.

Mais c'est un peu comme ajax, je n'ai rien trouvé qui explique comment l'inclure de manière standard.

Il existe un module css-compressor pour Django si vous souhaitez optimiser sa taille.

0
Roch