Django staticfiles application aide
J'ai un peu de problème avec Django staticfiles app.
J'ai ajouté
'django.contrib.staticfiles',
à mon INSTALLED_APPS et ont ajouté
STATIC_URL = '/static/'
STATIC_ROOT = '/Users/kevdotbadger/django/mylook/static/'
à mon settings.py
fichier.
Tous mes fichiers statiques sont situés à l'intérieur de la STATIC_ROOT
dossier sur mon Mac.
Maintenant, dans mon template j'utilise
{{ STATIC_URL }}
qui rend correctement à /static/
.
Cependant
{{ STATIC_URL }}css/style.css
suite à une erreur 404. Je suis l'aide de la "runserver de" commande " en tant que serveur.
Est-il quelque chose que je suis absent?
- Problème d'autorisations?
DEBUG
n'est pas définie àTrue
? - Yep, tout à fait vrai.
Vous devez vous connecter pour publier un commentaire.
Je vous supplie de lire le howto docs ici: http://docs.djangoproject.com/en/dev/howto/static-files/
En bref: STATIC_ROOT n'est utilisé que si vous appelez la collectstatic manangement de commande. Il n'est pas nécessaire d'ajouter le répertoire à la STATICFILES_DIRS paramètre pour servir vos fichiers statiques!
Au cours du développement (lorsque la détection automatique servant de vue est utilisée) staticfiles recherchera automatiquement les fichiers statiques dans divers lieux (parce que vous appelez son "service" vue avec un chemin d'accès à un fichier statique). Pour cette quête, il va utiliser ce qu'on appelle "trouveurs" (tel que défini dans la STATICFILES_FINDERS réglage).
L'un des détecteurs de défaut est la AppDirectoriesFinder, qui va chercher dans le fichier "/static/" répertoire de chacune des applications de la vôtre INSTALLED_APPS réglage.
Un autre défaut finder est le FileSystemFinder, qui va chercher dans les annuaires que vous spécifiez dans la STATICFILES_DIRS réglage.
BTW, ces deux modèles de recherche sont similaires à la façon dont le modèle des travaux de chargement.
La même technique sera utilisée lors de l'exécution de la collectstatic commande, sauf que maintenant il permettra de recueillir des fichiers à partir de différents endroits (en utilisant les mêmes inventeurs comme ci-dessus), en mettant les fichiers trouvés dans STATIC_ROOT, prêt pour le déploiement.
Si vous voulez juste une solution - faites défiler jusqu'à la "Solution".
Aperçu
Je découvrais le même problème hier. Voici ce que j'ai trouvé:
Tous vous avez besoin est approprié statique finder, qui vous permettra de trouver votre STATIC_ROOT et l'ensemble de son contenu, mais il n'y a pas une telle finder. Voici par défaut trouveurs:
django.contrib.staticfiles.trouveurs.AppDirectoriesFinder de recherche installé django applications dirs pour "statique" du dossier, mais la plupart d'entre eux utilisent obsolète "médias", les dossiers pour l'instant.
django.contrib.staticfiles.trouveurs.FileSystemFinder - utiliser tous les répertoires mentionnés dans le STATICFILES_DIRS, mais vous ne pouvez pas ajouter de STATIC_ROOT en elle.
django.contrib.staticfiles.trouveurs.DefaultStorageFinder - recherche statique dans votre DEFAULT_FILE_STORAGE qui est django.de base.les fichiers.le stockage.FileSystemStorage par défaut et il pointe vers votre MEDIA_ROOT
Solution
C'est tout, pas d'autres choix. Il n'y a pas de choix à utiliser STATIC_ROOT pour l'instant (dans Django 1.3).
Donc j'ai juste écrit mon propre finder pour ces besoins:
Mes statique personnalisé le fichier de recherche: finders.py:
settings.py:
Et n'oubliez pas: cette solution doit être utilisée uniquement dans les besoins de développement et jamais sur la production!
J'ai trouvé un moyen rapide et facile solution de contournement pour servir de projet global fichiers statiques au cours du développement:
Tout d'abord, assurez-vous que vous avez statique servir activé dans votre urls.py POUR le DÉVELOPPEMENT SEULEMENT.
Vous pouvez également avoir un supplément de barre oblique de là. Si votre STATIC_URL == '/static/', puis
{{ STATIC_URL }}/css/style.css devrait être {{ STATIC_URL }}css/style.css.
Cela fonctionne pour moi. STATIC_ROOT doit être différent de STATICFILES_DIRS (Django version 1.4 pré-alpha SVN-16436)