2011-08-16 20 views
8

Estoy tratando de comprender la estructura estática Django 1.3 intentos para perseguir:Django estructura estática

Tengo un proyecto con esta estructura:

Project 
    someapp 
     static 
      someapp 
      css 
      etcetera 
     models.py 
     views.py 
     urls.py 
    urls.py 
    manage.py 
    settings.py 

Ahora deseo sobrescribir la administración de Django .. Así tengo que fijar estos ajustes en settings.py cual hice como a continuación (ruta base es la ruta de acceso directo al directorio actual):

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files 
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/home/media/media.lawrence.com/static/" 
STATIC_ROOT = BASE_PATH+'/static/' 

# URL prefix for static files. 
# Example: "http://media.lawrence.com/static/" 
STATIC_URL = '/static/' 

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

# Additional locations of static files 
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. 
) 

Si utilizo el comando manage.py collectstatic, se Colle cts todos los archivos estáticos (incluidos los archivos de administración) en un directorio 'estático' como se esperaba ... (dentro del directorio principal del proyecto)

Sin embargo, su contenido no se sirve hasta que agregue ese directorio a la tupla STATICFILES_DIRS, sin embargo, entonces tengo que cambiar la configuración del directorio STATIC_ROOT porque de lo contrario obtendré el error de que no pueden ser iguales ...

Creo que estoy pasando por alto lo obvio porque lo que tengo que hacer para que funcione parece redundante

+1

Entonces ... ¿Pusiste los directorios en los que están realmente almacenados tus archivos en 'STATIC_DIRS' y apuntaste' STATIC_ROOT' a un directorio __empty__ donde Django puede recoger los archivos estáticos? – agf

Respuesta

-5

¿Qué tal:

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. 
    STATIC_ROOT, 
) 
+1

No, esa es exactamente la parte defectuosa ... Configurado incorrectamente: la configuración STATICFILES_DIRS no debe contener la configuración STATIC_ROOT – RoundTripToNowhere

+0

¡Expone explícitamente excepciones con esta opción! –

4

STATICFILES_DIRS es una configuración que utiliza para declarar archivos estáticos no específicos de la aplicación en vivo en su proyecto. STATIC_ROOT es donde se colocan los archivos estáticos cuando se recopilan.

De django's docs:..

"Su proyecto será probablemente también tienen activos estáticos que no están vinculados a una aplicación particular, el ajuste STATICFILES_DIRS es una tupla de una carpeta de sistema para comprobar al cargar archivos estáticos Es una ruta de búsqueda eso está por defecto vacío. Vea los documentos STATICFILES_DIRS cómo ampliar esta lista de rutas adicionales. "

"Establezca la configuración de STATIC_ROOT para que apunte a la ruta del sistema de archivos que desea que recojan sus archivos estáticos cuando use el comando de administración recopilada.

10

para el desarrollo local, trate de esta estructura

Project 
    Project (project directory with settings.py etc..) 
     stylesheets 
    someapp 
    static 
     base.css 

Con esto en settings.py:

import os 
ROOT_PATH = os.path.dirname(__file__) 
STATIC_ROOT = os.path.join(ROOT_PATH, 'static') 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (
    os.path.join(ROOT_PATH, 'stylesheets'), 
) 

ejecutar el servidor local con python manage.py runserver e ir a http://localhost:8000/static/base.css

Debería ver la hoja de estilo.

Cuestiones relacionadas