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
staticen el mismo nivel desettings.py, la ruta de misettings.pyes~/djcode/mysite/mysite/settings.py, por lo que este directorio es~/djcode/mysite/mysite/static/; - cree dos carpetas
static_dirsystatic_rootenstatic, que es~/djcode/mysite/mysite/static/static_dirs/y~/djcode/mysite/mysite/static/static_root/; escribe
settings.pycomo 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 collectstaticeste comando$ python manage.py collectstaticen shell;cree una carpeta
cssenstatic_dirsystatic_dirsen 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í.