[Python-es] [CONSULTA]static files

Ricardo Azpeitia Pimentel razpeitia en gmail.com
Lun Sep 1 04:56:06 CEST 2014


La parte de las urls:

Mas o menos así se ve un urlconf

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns('',
    # Las urls de tu apps
)

if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Recuerdas que haces las urls.py? Ligan un patrón de urls con una vista.
Esto es exactamente lo que estamos haciendo aquí. En este caso el patron es
STATIC_URL y MEDIA_URL, pasamos tambien el document root en este casoo
STATIC_ROOT Y MEDIA_ROOT respectivamente y la función static se encarga de
generar la todas las cosas necesarias para que pueda servir contenido
estático.

Esto es perfecto para el caso de desarrollo.

Para el caso de producción:

Configura tu servidor web, en el caso especifico de nginx.

location /static/ {
                alias /var/example.com/static/;
}

Donde /var/example.com/static/ es tu STATIC_ROOT, lo mismo funciona para
media.

Para apache ha de ser alguna configuración similar. Para cualquier otro
webserver le la documentación del webserver.


El 31 de agosto de 2014, 21:40, Pablo Ezequiel Ferreyra <
pabloeferreyra en gmail.com> escribió:

>  agradezco tu ayuda man, pero lamentablemente, entendi todo hasta la parte
> de la url que me pasas, no se si sera ignorancia mia solamente, pero no
> logro entender lo del url pattern
> "+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)" que no
> se como configurarlo ,por que me esta tirando errores, y la documentacion
> no me da respuestasseguras, por lo que he visto, tambien he vuelto a
> googlear, y ninguna documentacion que se presenta, me da vistas diferentes,
> pero ninguna ayuda realmente, lamentablemente
>
> si me pueden ayudar con configurar el webserver, se los agradeceria, por
> que sinceramente, estoy en un bucle muy raro de desentendimiento
>
>
>  El 31/08/14 a las 23:00, Ricardo Azpeitia Pimentel escibió:
>
>  Veo un montón de detalles en tu settings, cables hardcodeadas por varios
> lados, es un error que todo el mundo comete. Incluso cuando inicie lo
> cometí. Pero no es ningún pecado cometer este tipo de errores pero no
> tratarlo de corregirlo si lo es o debería de serlo xD.
>
>  Volviendo al tema de los archivos estáticos no deberían de ser un tema
> complejo. Te voy a explicar rápidamente como funcionan los archivos
> estáticos. Que no son temas de django per se, si no de desarrollo web, a lo
> que voy es que son conceptos que lo puedes aplicar en django, ruby o rails,
> ASP .net o cualquier otro webframework.
>
>  Los archivos estáticos, es contenido que se entrega tal y como se
> encuentra guardado. Los archivos mas comunes, css, js, imagenes (png, jpg,
> gif, etc...) pero en general puede ser cualquier archivo.
>
>  Django, divide los archivos estáticos en 2 categorías. Statics y Media.
>
>  Statics son archivos estáticos que usa el desarrollador para la
> aplicación.
> Mientras que Media son los archivos estáticos que sube el usuario al
> momento de usar la aplicación.
>
>  Django ofrece 4 variables básicas para configurar los archivos estáticos.
>
>  STATIC_ROOT
> STATIC_URL
>
>  MEDIA_ROOT
> MEDIA_URL
>
>  Las variables *_ROOT es simplemente una cadena con la ruta (path) de
> donde están esos archivos estáticos.
> Ejemplo:
> MEDIA_ROOT = '/var/statics/example.com/media/'
> STATIC_ROOT = '/var/statics/example.com/static/'
>
>  Y las variables *_URL es el fragmento de URL de donde sera servidas.
>  Ejemplo:
>  MEDIA_URL = '/media/'
> STATIC_URL = '/static/'
>
>  Entonces si tengo configurado las variables STATIC_* y hago:
> http://www.example.com/static/somefile.txt
>
>  Va intentar buscar*:
> /var/statics/example.com/static/somefile.txt
>
>  (Suponiendo que django sirve los archivos estáticos que es una pésima
> idea, excepto si estas en desarrollo.)
> * Django tiene algo llamado static finders, realmente no solamente busca
> en esa localización, busca en una lista de localizaciones. Ya sea por
> alguna definida o inspecciona cada app. Para mas información al respecto
> lee la documentación.
>
>  Lo mismo ocurre para media.
>
>  Como dije antes, django no debería de servir los archivos estáticos. Y
> tal vez te preguntes entonces para que le doy la ruta si no va a servir los
> archivos estáticos? Bueno lo interesante pasa cuando haces 2 operaciones:
> collectstatics, lo que hace es busca todos archivos estáticos de las apps y
> de otros lugares (ver static finders) y los pone todos en el STATIC_ROOT.
> La otra operación interesante es cuando el usuario sube archivos, a donde
> van a parar esos archivos? Obviamente al MEDIA_ROOT y por eso son
> necesarias las rutas.
>
>  Lo que haces en producción es configurar tu servidor web para que cuando
> venga una petición http por /static/ (STATIC_URL) o /media/ (MEDIA_URL)
> envié directo los archivos que estén en STATIC_ROO o MEDIA_ROOT
> respectivamente. Este tema queda fuera de django, porque es mas de la
> configuración de tu webserver.
>
>
>  Suficiente explicaciones, tu problema es que no tienes configurado tu
> proyecto para que sirva los archivos estáticos.
>
>  Veamos el checklist:
> STATIC_ROOT [X]
> STATIC_URL    [X]
> urls.py               [   ]
>
>  Veo que no tienes configurado django para que responda a las peticiones
> HTTP, via /static/. Para activarlas esta explicado en la documentación.
>
> https://docs.djangoproject.com/en/1.6/howto/static-files/#serving-files-uploaded-by-a-user-during-development
>
>  Si estas en producción, entonces configura tu webserver para que sirva
> los archivos estáticos y no lo haga django.
>
>  No necesitas que sea tu ultima vez preguntando, pero no lees mas de como
> funciona django (libros, tutoriales, cursos, screencasts, hay un sin fin de
> material) seguramente seguirás preguntando, por cualquier problema que te
> topes.
>
>
>
> El 31 de agosto de 2014, 19:23, Pablo Ezequiel Ferreyra <
> pabloeferreyra en gmail.com> escribió:
>
>> hola gente, pido disculpas, creo que este es el ultimo mail que envio
>> pidiendo ayuda, pero es que ya me tiene loco este proyecto, y soy bastante
>> novato por ahora en el mundo de django, aunque gracias a todos y toda la
>> ayuda, voy aprendiendo bastante sobre este lenguaje, y voy a poder
>> aplicarlo mejor en los proximos proyectos.
>>
>> ahora, el problema que tengo, es que no logro entender como configurar
>> los archivos estaticos, he buscado por google, y por la documentacion
>> oficial, pero he entrado a callejones sin salida, de los que no he podido
>> ver la luz del sol.
>>
>> por lo tanto, recurro una vez mas a su sabiduria para que me ayuden a
>> resolver esto, por que no se donde estoy fallando, por que en teoria, esta
>> todo correcto, no se que es lo que falla, pero todo lo que es static, y
>> estilos css no me los carga ni por que le suplique, me levanta una pantalla
>> sin ningun tipo de estilo en html, cosa que es bastante engorroso
>>
>> comparto mi codigo para que me puedan ayudar, como es costumbre, ya que
>> esta vez, la consola no me ayuda por que no devuelve nada erroneo
>> http://github.com/hackerzeta/sistema/
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>
>
>
> _______________________________________________
> Python-es mailing listPython-es en python.orghttps://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140831/5e431340/attachment.html>


Más información sobre la lista de distribución Python-es