2011-10-18 3 views
0

J'ai mis en place un projet simple et tout fonctionnait bien jusqu'à un certain point. J'ajoutais des choses au projet, des chemins vers des répertoires statiques, etc, et soudainement je me suis rendu compte que les médias d'administration cessaient d'être servis, pas de css, pas d'images.Django admin médias cessé d'être servi localement

la source de Voir la page révèle ceci:

link rel="stylesheet" type="text/css" href="/static/admin/css/base.css" 

Ce qui est correct et le même chemin fonctionne avec tout projet Django nouvellement créé.

Fondamentalement, je voudrais réactiver en quelque sorte que le support d'administration est servi à partir de l'emplacement par défaut.

Ceci est la settings.py mais franchement, je ne l'ai pas beaucoup changé depuis le moment où il a cessé de fonctionner.

# Absolute path to the directory that holds media. 
# Example: "/home/media/media.lawrence.com/" 
MEDIA_ROOT = os.path.join(PROJECT_ROOT, "site_media", "media") 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
# trailing slash if there is a path component (optional in other cases). 
# Examples: "http://media.lawrence.com", "http://example.com/media/" 
MEDIA_URL = "/site_media/media/" 

# Absolute path to the directory that holds static files like app media. 
# Example: "/home/media/media.lawrence.com/apps/" 
STATIC_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static1") 

# URL that handles the static files like app media. 
# Example: "http://media.lawrence.com" 
STATIC_URL = "/site_media/" 

# Additional directories which hold static files 
STATICFILES_DIRS = [ 
    os.path.join(PROJECT_ROOT, "site_media"), 
    os.path.join(PROJECT_ROOT, "site_media", "static"), 
    os.path.join(PROJECT_ROOT, "site_media", "media"), 
] 

# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a 
# trailing slash. 
# Examples: "http://foo.com/media/", "/media/". 
ADMIN_MEDIA_PREFIX = '/static/admin/' 

# Make this unique, and don't share it with anybody. 
SECRET_KEY = '[email protected]=7gbj8xb5z*u6cew3x8m(&_v&jlp16!^[email protected]#' 

# List of callables that know how to import templates from various sources. 
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader', 
#  'django.template.loaders.eggs.Loader', 
) 

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
) 

ROOT_URLCONF = 'wizs.urls' 

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
    os.path.join(PROJECT_ROOT, "templates"), 
) 


TEMPLATE_CONTEXT_PROCESSORS = [ 
    "django.core.context_processors.auth", 
    "django.core.context_processors.debug", 
    "django.core.context_processors.i18n", 
    "django.core.context_processors.media", 
    "django.core.context_processors.request", 
    "django.contrib.messages.context_processors.messages", 
    'django.core.context_processors.static', 
] 

MISE À JOUR

Paraît qu'il est descendu à jongler avec ces deux propriétés:

1) Maintenant, je vois les médias admin mais pas les médias (par exemple Uploaded images)

STATIC_URL = "/site_media/static/" 
ADMIN_MEDIA_PREFIX = '/site_media/static/admin/' 

2) Maintenant, je vois les fichiers multimédias téléchargés, mais pas les médias d'administration

STATIC_URL = "/site_media/" 
ADMIN_MEDIA_PREFIX = '/site_media/static/admin/' 

Répondre

1

Il ressemble à STATIC_URL devrait être "/ site_media/static1 /" et ADMIN_MEDIA_PREFIX devrait être "/ site_media/static1/admin /"

Quelques autres suggestions:

  1. Ne pas compilez votre MEDIA_ROOT dans votre STATIC_ROOT, donc supprimez os.path.join(PROJECT_ROOT, "site_media", "media"),
  2. Vos fichiers statiques locaux ne doivent pas non plus être dans site_media. alors supprimez os.path.join(PROJECT_ROOT, "site_media", "static"), et changez-le en os.path.join(PROJECT_ROOT, "static"), et déplacez-y ce répertoire.
  3. Vous devez supprimer localement site_media et le remplir uniquement sur le serveur. (ou, bien sûr, avec tous les médias que vous téléchargez localement). Mais vous n'avez pas besoin d'exécuter collectstatic localement. Si/une fois que vous faites ces choses, vous pouvez changer "static1" en statique, puis servir le dossier/site_media/entier via nginx, et vous n'aurez alors aucun doublon dans ce dossier.

Bonne chance.

Voici mes paramètres:

# settings.py 
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'site_media', 'media') 
MEDIA_URL = '/site_media/media/' 

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'site_media', 'static') 
STATIC_URL = '/site_media/static/' 

ADMIN_MEDIA_PREFIX = '/site_media/static/admin/' 

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'), 
) 

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

# urls.py 
from django.conf import settings 

urlpatterns += patterns('', 
    url(r'^site_media/static/(?P<path>.*)$', 'django.contrib.staticfiles.views.serve'), 
    url(r'^site_media/media/(?P<path>.*)$', 'django.views.static.serve', { 
     'document_root': settings.MEDIA_ROOT, 
    }) 
) 
+0

S'il vous plaît vérifiez la mise à jour à la fin du poste. O a réussi à faire apparaître les médias d'administration, mais mes fichiers téléchargés ont disparu. On dirait que je ne peux pas trouver les paramètres pour avoir les deux. – Ska

+0

J'ai ajouté tous mes paramètres, veuillez les vérifier et voir s'ils fonctionnent pour vous. –

+0

L'urls.py a fait l'affaire. Cependant, j'avais besoin d'avoir STATICFILES_DIRS comme je les avais avant, pas comment vous l'avez. Tout cela avec des fichiers statiques, des médias et des médias d'administration est très confus dans Django. J'espère qu'ils simplifieront cela bientôt. – Ska