Manejo de archivos staticos en django desarrollo

844 views
Skip to first unread message

William Alexander Moreno Gomez

unread,
Oct 10, 2016, 4:38:12 PM10/10/16
to Django-es
Buenas tardes a todos,

de antemano agradezco a cada uno de ustedes la colaboración que me puedan brindar,

Tengo un problema con los archivos estaticos en django y por mas que le he dato no me funciona, el tema es que para el ambiente de produccion ya tengo configurado el servidor apache , y en este ya he logrado publicar el sitio con los archivos estaticos de forma correcta, sin embargo para el ambiente de desarrollo utilizando  (python manage runserver host:puerto), no logro poder hacer que el sitio cargue los archivos estaticos de forma correcta.

En el archivo de configuracion he realizado las siguientes definiciones:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,"static/")

ahora en la documentacion de django encuentro que para el sistema de desarrollo debo agregar a las urls.py la url que maneja los archivos estaticos por lo que mi archivo urls.py esta asi:

from django.conf.urls import url,include
from . import views
from django.conf import settings   
from django.conf.urls.static import static

urlpatterns = [
    url(r'^$',views.WebInicio),
    url(r'^login/$',views.WebLogin),
    url(r'^logout/$',views.WebLogout),
]
if settings.DEBUG :
    urlpatterns += patterns('',
    ) + static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)

Con lo anterior , cuando corró el sitio a traves de apache, este carga todos los archivos staticos de forma correcta, sin embargo cuando corro el sitio con la herramienta de desarrollo de django , no encuentra los archivos estaticos.

les agradezco la ayuda que me puedan brindar




Diego Forero

unread,
Oct 10, 2016, 5:25:40 PM10/10/16
to Django-es

Cambiaste en tus settings DEBUG = True


--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

francisco del roio

unread,
Oct 10, 2016, 7:36:01 PM10/10/16
to djan...@googlegroups.com
Hola,
Bueno, hay varias posibilidades que causen problemas:

1. Lo que veo es que me suena incorrecto las líneas debajo de 'if
settings.DEBUG:", yo no haría nada especial para esa situación, creo que
Django lo hace todo solito. En mi caso, jamás he tenido que escribir
código adicional para eso.
2. Otra posibilidad es que esté buscando en la carpeta incorrecta. Lo
normal es que no sea necesario hacer mas que incluir la app de archivos
estáticos en tu INSTALLED_APPS.
3. Podrías solucionarlo haciendo una app para todo lo que sea base para
tu proyecto, incluyendo a los archivos estáticos. De esa manera, creas
una carpeta llamada 'static' dentro del directorio de tu app y listo.

Un saludo.

francisco del roio

unread,
Oct 10, 2016, 8:03:06 PM10/10/16
to djan...@googlegroups.com
Hola,



El 10/10/2016 a las 17:38, William Alexander Moreno Gomez escribió:
> Buenas tardes a todos,
>
> de antemano agradezco a cada uno de ustedes la colaboración que me
> puedan brindar,
>
> Tengo un problema con los archivos estaticos en django y por mas que
> le he dato no me funciona, el tema es que para el ambiente de
> produccion ya tengo configurado el servidor apache , y en este ya he
> logrado publicar el sitio con los archivos estaticos de forma
> correcta, sin embargo para el ambiente de desarrollo utilizando
> (python manage runserver host:puerto), no logro poder hacer que el
> sitio cargue los archivos estaticos de forma correcta.
>
Eso es bastante extraño, yo no tengo ningún problema. Eso si, distribuyo
los archivos estáticos por aplicaciones, no por proyecto.

¿Qué versión de Django tenés? Porque, en caso de tener alguna nueva, no
deberías tener ningún problema, simplemente hay que añadir los archivos
estáticos a las carpetas static de tus apps, lo que hará que el servidor
los tome. Creo que lo de STATIC_ROOT solo se usa en entornos de
desarrollo y para archivos estáticos adicionales.

> En el archivo de configuracion he realizado las siguientes definiciones:
>
> STATIC_URL = '/static/'
> STATIC_ROOT = os.path.join(BASE_DIR,"static/")
>
> ahora en la documentacion de django encuentro que para el sistema de
> desarrollo debo agregar a las urls.py la url que maneja los archivos
> estaticos por lo que mi archivo urls.py esta asi:
>
> from django.conf.urls import url,include
> from . import views
> from django.conf import settings
> from django.conf.urls.static import static
>
> urlpatterns = [
> url(r'^$',views.WebInicio),
> url(r'^login/$',views.WebLogin),
> url(r'^logout/$',views.WebLogout),
> ]
> if settings.DEBUG :
> urlpatterns += patterns('',
> ) + static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
>
Esto suena a que usas una versión algo vieja de Django, porque ya no se
usa la función patterns en las urls.

Lo dicho, no se necesita hacer nada practicamente para que funcione la
carga de archivos estáticos, mas que la configuración de STATIC_URL,
STATIC_ROOT y la inclusión de django.contrib.staticfiles en tu lista de
INSTALLED_APPS.
> Con lo anterior , cuando corró el sitio a traves de apache, este carga
> todos los archivos staticos de forma correcta, sin embargo cuando
> corro el sitio con la herramienta de desarrollo de django , no
> encuentra los archivos estaticos.
>
Otra posibilidad es que no busque en la carpeta correcta, deberías
depurar, a ver si apunta a la carpeta correcta.


Saludos,

William Alexander Moreno Gomez

unread,
Oct 11, 2016, 10:38:04 AM10/11/16
to Django-es

Gracias Francisco y Alexander, creo que la forma en que lo estoy haciendo esta errada, independientemente de mis aplicaciones yo por proyecto genero una carpeta para los archivos staticos , es decir tengo mi siguiente estructura de archivos:

> Proyecto
      manage.py
   > proyecto
      __init__.py
      settings.py
      urls.py
      wsgi.py  
   > aap_1
      __init__.py
      admin.py
      models.py
      views.py  
   > aap_2
      __init__.py
      __init__.py
      admin.py
      models.py
      views.py  
   > static
      Archivos estaticos para todas las aplicaciones
   > templates : Aqui llevo todos mis templates

Voy a comenzar a trabajar con archivos staticos sobre cada app para ver como funciona y como las puedo publicar y servir a traves de un servidor web como apache los archivos estaticos por aplicacion. Si alguno tiene alguna guia les quedo agradecido.


Omar Sarmiento Rolo

unread,
Oct 11, 2016, 10:42:05 AM10/11/16
to djan...@googlegroups.com
amigo eso realmente no es muy dificil de hacer, si te decides por usar apache con un virtual host quizas te pueda ayudar, ademas, tienes que ponerle algunas cosas en el archivo setting.py de tu proyecto, saludos, aki estamos

--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-unsubscribe@googlegroups.com

Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+unsubscribe@googlegroups.com.

francisco del roio

unread,
Oct 11, 2016, 1:16:02 PM10/11/16
to djan...@googlegroups.com
Hola,


Realmente no es difícil. Mientras trabajes en devel no es necesario
configurar nada, pero para publicar en el server corres "python
manage.py collectstatic" y lo que va a hacer el manager es reunir todos
los archivos estáticos de todas las apps en una misma carpeta (la
indicada en STATIC_ROOT).

Por ejemplo, yo que soy fan de Heroku, veo que cuando se publica el
proyecto el servidor pide un collectstatic al manager, y la carpeta a
donde paran los archivos estáticos la configura para eso, para servir
archivos estáticos y no es controlada por el framework, sino por el web
server.

Lo mismo reza para las plantillas, al menos en mi manera de trabajar.

La ventaja de tener todo distribuido por aplicación es que podés
desarrollar y guardar aplicaciones acoplables sin que te percates
incluso de que lo estás haciendo.

SLDS

Omar Sarmiento Rolo

unread,
Oct 11, 2016, 1:18:33 PM10/11/16
to djan...@googlegroups.com
exacto aunque yo realmente nunca he usado un webserver (por leyes de mi país y demás) las veces que he puesto algo en un server yo mismo tengo que administrarlo, es decir, instalo apache y le config todo jaja tiene sus ventajas los webserver jaja ya que config un virtual host hay veces que se las trae jaja

--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
 Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
 Para anular la suscripción a este grupo, envíe un mensaje a django-es-unsubscribe@googlegroups.com
 Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.

jorge.c...@gvadeto.com

unread,
Apr 20, 2018, 3:09:07 PM4/20/18
to Django-es
Me siento perdido respecto al tema.
Tengo django 1.11

tengo mi carpeta static dentro de mi applicacion.
en DEBUG = True funciona bien.
pero en False no funciona.

he configurado las siguientes lineas en settings.py


Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com

Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages