2011-04-07 18 views
9

Estoy usando Django 1.3 y los archivos estáticos en la aplicación son confusos. Lo que estaba haciendo: 1) Establecer laDjango 1.3 archivos estáticos colocados en los directorios de aplicación

STATIC_ROOT = as path to directory 'static' in my project 
STATIC_URL = '/static/' 

2) Servir en mi urls.py

if settings.DEBUG: 
    urlpatterns += patterns(
     '', 
     url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}), 
    ) 

3) Lugar css y js archivos en la carpeta 'estático' en mi directorio de la aplicación . Y compré tales directorios árbol:

my_project/ 
    main_app/ 
     static/ 
      css/ 
       style.css 
      js/ 
    secondary_app/ 
     static/ 
      foldername/ 
       file.css 

4) añadí tanto de estas aplicaciones a INSTALLED_APPS en el archivo settings.py. Y ahora en mi plantilla cuando escribo línea de seguimiento:

<link rel="stylesheet" href="{{ STATIC_URL }}css/style.css" type="text/css" /> 

Django encuentra exitosamente mi archivo CSS en el directorio

my_project/main_app/static/css/ 

y tapones en style.css Pero cuando escribo

<link rel="stylesheet" href="{{ STATIC_URL }}foldername/file.css" type="text/css" /> 

Django no conecta este archivo.

Entonces mi pregunta: ¿Qué estoy haciendo mal? ¿Por qué no puedo conectar mi archivo css desde el directorio secondary_app? ¿Qué tengo que contarte más sobre esta situación?

+0

has dos directorios llamados "estática". ¿A cuál hace '' STATIC_ROOT' señalar de nuevo? –

+0

En los documentos del sitio oficial, he leído que los desarrolladores pueden poner archivos estáticos en el subdirectorio 'static /' de su aplicación. ¿Me equivoco? [link] (http://docs.djangoproject.com/en/dev/howto/static-files/#managing-static-files) – tony

+0

Por cierto si cambio el nombre secondary_app/static/foldername /, que contiene mi archivo css , a secondary_app/static/css/Django plugs en el archivo css con éxito. No sé por qué ... ¿Alguien puede explicar esto? – tony

Respuesta

11

La idea detrás de eso es que envíe todas sus aplicaciones con sus propios archivos estáticos bajo app/static.

Una vez que implementar una aplicación en un proyecto, corriendo python manage.py collectstatic va a copiar todos los archivos estáticos encontraron gracias a STATICFILES_FINDERS entorno (que contiene un buscador que busca una dir static en cada aplicación instalada por defecto) dentro de su directorio STATIC_ROOT continuación se servirá a través de STATIC_URL

El servidor de desarrollo que maneja STATIC_URL patrón cuando se encuentra en modo de DEBUG pero esta es una lectura interesante: Serving static files in production

+1

¿Quiere decir que cada vez que agreguemos un archivo estático al entorno dev tendremos que ejecutar una colección de datos? –

+1

@Glide: No. Si tiene evento collectstatic pero no lo quiere: elimine el alias de Apache y agregue 'staticfiles_urlpatterns' a sus urls y active la depuración. https://docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/#static-file-development-view (en la parte inferior). –

Cuestiones relacionadas