staticfiles_dirs - django static files production
¿Cuál es el camino absoluto de BASE DIR? (3)
Django novato aquí. Tengo problemas para entender el significado de:
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
y
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), ''static'')
STATICFILES_DIRS = (
os.path.join(os.path.dirname(BASE_DIR), "static", "static"),
)
¿Que esta pasando aqui?
Supongo que el " archivo " es el archivo settings.py en el que estamos (?), Por lo que BASE_Dir está a dos carpetas por encima de eso ... es decir, el que tiene manage.py en él?
¿Entonces el STATIC_ROOT, será uno? ¿o dos? directorios desde el BASE_DIR. ¿Se hará la CARPETA STATIC_ROOT para mí? ¿O tengo que hacer uno llamado "estático"?
└── MY_PROJECT
├── BASE_DIR
│ ├── MY_APP
│ │ └── settings.py
│ └── manage.py
└── static
¿Lo anterior es correcto para este ejemplo? Entonces, ¿qué diablos / dónde diablos serán las STATIC_FILES_DIRS?
BASE_DIR es el directorio de su proyecto Django. El mismo directorio donde se encuentra manage.py.
Si desea saber dónde se encuentra BASE_DIR, puede imprimirlo en el terminal, simplemente agregue esta línea a su configuración.py:
print "base dir path", BASE_DIR
y runserver para ver resultados.
Si su configuración.py está configurada de esta manera, su sistema de archivos se verá así:
└── MY_PROJECT
├── BASE_DIR
│ ├── MY_APP
│ │ └── settings.py
│ └── manage.py
└── static -> STATIC_ROOT
└── static -> STATICFILES_DIRS
Pero no es una buena configuración porque mezcla estadísticas estáticas recopiladas y el directorio donde Django intenta encontrar archivos estáticos (por ejemplo, para recopilarlos). Puede ser mejor usar esto:
└── MY_PROJECT
└── BASE_DIR
├── my_app
│ ├── settings.py
│ └── static -> STATICFILES_DIRS
├── manage.py
└── deployment
├── collected_static -> STATIC_ROOT
└── media -> MEDIA_ROOT
# settings.py
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATICFILES_DIRS = (os.path.join(
BASE_DIR, "my_app", "static"),)
STATIC_ROOT = os.path.join(
os.path.dirname(BASE_DIR), "deployment", "collected_static")
MEDIA_ROOT = os.path.join(
os.path.dirname(BASE_DIR), "deployment", "media")
Ahora puede implementar fácilmente sus archivos estáticos y multimedia utilizando su servidor web favorito (Apache, Nginx, etc.) apuntando al directorio de "implementación".
Actualizar:
También agregué una configuración recomendada para MEDIA_ROOT y cambié la ruta para la estática recopilada.