python - estaticos - Django-No se pueden cargar archivos CSS estáticos
django styles (14)
¿Faltan estos en su settings.py
? Estoy pegando uno de los ajustes de mi proyecto:
TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.contrib.messages.context_processors.messages")
Además, esto es lo que tengo en mi urls.py
:
urlpatterns += patterns('''', (
r''^static/(?P<path>.*)$'',
''django.views.static.serve'',
{''document_root'': ''static''}
))
Estoy ejecutando el servidor de desarrollo de Django ( runserver
) en mi máquina local (Mac OS X) y no puedo cargar los archivos CSS.
Aquí están las entradas relevantes en settings.py:
STATIC_ROOT = ''/Users/username/Projects/mysite/static/''
STATIC_URL = ''/static/''
STATICFILES_DIRS = (
''/Users/thaymore/Projects/mysite/cal/static'',
)
STATICFILES_FINDERS = (
''django.contrib.staticfiles.finders.FileSystemFinder'',
''django.contrib.staticfiles.finders.AppDirectoriesFinder'',
#''django.contrib.staticfiles.finders.DefaultStorageFinder'',
)
INSTALLED_APPS = (
# other apps ...
''django.contrib.staticfiles'',
)
En mi views.py estoy solicitando el contexto:
return render_to_response("cal/main.html",dict(entries=entries),context_instance=RequestContext(request))
Y en mi plantilla, {{ STATIC_URL }}
procesa correctamente:
<link type="text/css" href="{{ STATIC_URL }}css/main.css" />
Se convierte en:
<link type="text/css" href="/static/css/main.css"/>
Que es donde el archivo se encuentra realmente. También ejecuté collectstatic
para asegurarme de que todos los archivos fueron recolectados.
También tengo las siguientes líneas en mi urls.py:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
Soy nuevo en Django, así que probablemente me esté perdiendo algo simple: agradecería cualquier ayuda.
¿Has añadido en tus plantillas:
{% load staticfiles %}
Esto carga lo que se necesita, pero por alguna razón he experimentado que a veces funciona sin esto ...
Agregue el siguiente código a su settings.py
:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
Después de eso, cree la carpeta estática en el directorio raíz de su proyecto.
Para cargar los archivos estáticos en plantillas use:
{% load static %}
<img src="{% static "images/index.jpeg" %}" alt="My image"/>
Agregue este "django.core.context_processors.static",
procesador de contexto en su settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.static",
)
Con Django 1.11.x +, debe configurar archivos estáticos en settings.py
as,
STATIC_URL = ''/static/'' # the path in url
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
y usarlo con etiqueta de plantilla estática,
{% load static %}
<link rel="stylesheet" href="{% static ''css/bootstrap.css'' %}">
Estos pasos funcionan para mí, solo vea Cargar archivos estáticos (CSS, JS, e imágenes) en Django
Yo uso Django 1.10.
- cree una carpeta
static
en el mismo nivel desettings.py
, la ruta de misettings.py
es~/djcode/mysite/mysite/settings.py
, por lo que este directorio es~/djcode/mysite/mysite/static/
; - cree dos carpetas
static_dirs
ystatic_root
enstatic
, que es~/djcode/mysite/mysite/static/static_dirs/
y~/djcode/mysite/mysite/static/static_root/
; escribe
settings.py
como esto:# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.10/howto/static-files/ STATIC_URL = ''/static/'' STATIC_ROOT = os.path.join(BASE_DIR, ''mysite'', ''static'', ''static_root'') STATICFILES_DIRS = ( os.path.join(BASE_DIR, ''mysite'', ''static'', ''static_dirs''), )
$ python manage.py collectstatic
este comando$ python manage.py collectstatic
en shell;cree una carpeta
css
enstatic_dirs
ystatic_dirs
en su propio archivo.css
, la ruta de su archivo css es~/djcode/mysite/mysite/static/static_dirs/css/my_style.css
;cambie la etiqueta
<link>
en el archivo.html
:<link rel="stylesheet" type="text/css" href="{% static ''css/my_style.css'' %}">
,
Finalmente, la ruta de este enlace es http://192.168.1.100:8023/static/css/my_style.css
¡Bingo!
Lea esto detenidamente: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/
¿Está django.contrib.staticfiles
en su INSTALLED_APPS
en settings.py
?
DEBUG=False
? Si es así, debe llamar a runserver
con el parámetro --insecure
:
python manage.py runserver --insecure
collectstatic
no influye en la publicación de archivos a través del servidor de desarrollo. Es para recopilar los archivos estáticos en una ubicación STATIC_ROOT
para que su servidor web los encuentre. De hecho, la ejecución de collectstatic
con su STATIC_ROOT
establecido en una ruta en STATICFILES_DIRS
es una mala idea. Debe verificar dos veces para asegurarse de que sus archivos CSS existan ahora.
Otra cosa sencilla es intentar detener y luego reiniciar el servidor, por ejemplo,
$ python manage.py runserver
Miré las otras respuestas, pero reiniciar el servidor funcionó para mí.
Probé este modelo y funcionó.
Cambios en la configuración según el proyecto django creado con shell
"django-admin.py startproject xxx"# here xxx is my app name
modifique la carpeta como se muestra debajo de la estructura cargando nuestros archivos estáticos para ejecutar en el servidor
La estructura de xxx es:
> .
> |-- manage.py
> |-- templates
> | `-- home.html
> `-- test_project
> |-- __init__.py
> |-- settings.py
> |-- static
> | |-- images
> | | `-- 01.jpg
> | |-- style.css
> |-- urls.py
> `-- wsgi.py
- modificaciones en Settings.py
import os
INSTALLED_APPS = ( ''xxx'',# my app is to be load into it)
STATIC_ROOT = ''''
STATIC_URL = ''/static/''
PROJECT_DIR = os.path.dirname(__file__)
TEMPLATE_DIRS = ( os.path.join(PROJECT_DIR, ''../templates''),)#include this
- modificaciones en urls.py
from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView
class DirectTemplateView(TemplateView):
extra_context = None
def get_context_data(self, **kwargs):
context = super(self.__class__, self).get_context_data(**kwargs)
if self.extra_context is not None:
for key, value in self.extra_context.items():
if callable(value):
context[key] = value()
else:
context[key] = value
return context
urlpatterns = patterns('''',
url(r''^$'', DirectTemplateView.as_view(template_name="home.html")), )
- home.html
<html>
<head>
<link href="{{STATIC_URL}}style.css" rel="stylesheet" type="text/css">
</head>
<body>
<h1>This is home for some_app</h1>
<img src="{{STATIC_URL}}/images/01.jpg" width=150px;height=150px; alt="Smiley ">
</body>
</html>
Tuve que usar
STATICFILES_DIRS = ( ''/home/USERNAME/webapps/django/PROJECT/static/'', )
Eso me ayudó.
Tuvo el mismo camino en STATICFILES_DIRS Y STATIC_ROOT, me encontré con el mismo problema y debajo estaba la excepción:
Configuración incorrecta: la configuración STATICFILES_DIRS no debe contener la configuración STATIC_ROOT
Para local, no necesita STATICFILES_DIRS, ya que de todos modos no necesita ejecutar collectstatic. Una vez que lo comentas, debería funcionar bien.
Vea si su aplicación principal (donde se encuentra el directorio estático) está incluida en su INSTALLED_APPS.
Los archivos se buscan utilizando los buscadores habilitados. El valor predeterminado es buscar en todas las ubicaciones definidas en STATICFILES_DIRS y en el directorio ''estático'' de las aplicaciones especificadas por la configuración INSTALLED_APPS.
adicional
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, "static"), )
y STATIC_ROOT
de settings.py
, funcionó para mí
DEBUG = True
en mi configuración local lo hizo por mí.