medida que la gente ya se ha señalado, se debería poner su directiva static_dir
antes /.*
patrón
Sin embargo, ese no es el único que debe conocer.
Al poner esta directiva en app.yaml, hace que AppEngine webserver (ya sea su servidor de desarrollo o producción) maneje la ruta /static
, y necesita que todos los archivos estáticos estén dentro del directorio estático. Esto significa que usted tendrá que ejecutar python manage.py collectstatic
cada vez que cambie nada en sus archivos estáticos (especialmente si tiene aplicaciones/uso con archivos estáticos - como, por ejemplo, admin
o django-tinymce
) sólo para probar estos cambios en el servidor local
Entonces, ¿cómo evitar eso? Por defecto, staticfiles proporciona a los ayudantes para que sirvan estos archivos en el servidor de desarrollo sin ejecutar recopilaciones cada vez, el problema es el conflicto de nombre de dominio descrito en el párrafo anterior: Django no puede capturar solicitudes a su ruta de archivos estáticos, ya que son manejadas por el servidor de aplicaciones. Se puede resolver mediante el uso de diferentes caminos en el desarrollo y la producción de servidor:
# in settings.py
if DEBUG:
STATIC_URL = '/devstatic/'
else:
STATIC_URL = '/static/'
(djangoappengine fija de depuración en True en el servidor de desarrollo). Puede dejar ADMIN_MEDIA_PREFIX = '/static/admin/'
, pero recuerde que debe ejecutar collectstatic al menos una vez antes de usar administrador
Por supuesto, recuerde usar {{ STATIC_URL }}path/to.css
en las plantillas en lugar de /static/path/to.css
Ah, y supongo que a distinguir el directorio de archivos estáticos originales se trabajar en y el directorio donde se deben recopilar los archivos estáticos. Yo uso este en mi settings.py:
STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'sitestatic')
STATICFILES_DIRS = (
os.path.join(os.path.dirname(__file__), 'static'),
)
Esto significa: poner sus fiels estáticos en static
dir (y dentro de tus aplicaciones static
directorios), collectstatic
los recoge en sitestatic
dir.app.yaml
apropiada directiva es
- url: /static
static_dir: sitestatic
Por último, puede configurar app.yaml
ignorar static
y media
directorios al cargar la aplicación, ya que todos los archivos estáticos serán recogidas dentro y sirven de sitestatic
. Sin embargo, debe configurar esto solo durante la carga (de lo contrario, estos archivos no estarán disponibles en el servidor de depuración)
¿Por casualidad está poniendo sus plantillas allí? –