django static-files

Django Static Files Development



static-files (1)

Según lo que has publicado hasta ahora, parece que estás siguiendo los documentos para django.contrib.staticfiles . Estoy de acuerdo en que django.contrib.staticfiles pueden ser difíciles de seguir, especialmente si uno es nuevo en django.

Creo que la confusión proviene del hecho de que django.contrib.staticfiles tiene dos modos de operación:

  1. Durante la fase de desarrollo donde se usa el servidor de desarrollo , busca dinámicamente archivos estáticos en directorios predefinidos y los pone a disposición en STATIC_URL
  2. Para la implementación, ayuda a organizar los archivos estáticos en un solo directorio (definido con STATIC_ROOT ) para que los archivos estáticos se puedan alojar utilizando un servidor web adecuado para archivos estáticos. Esta recopilación se realiza mediante python ./manage.py collectstatic .

Aquí hay un breve resumen de cómo ponerse en marcha. No he tenido la oportunidad de probarlo, así que puede haber errores. Esperamos que esto te ayude a comenzar y, al menos, te ayude a entender los documentos. En caso de duda, consulte la documentación.

Alojamiento de archivos estáticos en el servidor de desarrollo.

  1. Asegúrese de tener ''django.contrib.staticfiles'' en INSTALLED_APPS

  2. Especifique STATIC_URL . Esta será la ruta donde se alojarán tus archivos estáticos.

    STATIC_URL = ''/static/''

  3. Asegúrese de que sus archivos están en los directorios correctos. De forma predeterminada, los archivos static/ buscarán los archivos dentro del directorio static/ de cada aplicación instalada, así como en los directorios definidos en STATICFILES_DIRS . (Este comportamiento depende de los backends listados en STATICFILES_FINDERS ). En su caso, es probable que desee especificar su directorio en STATICFILES_DIRS :

    STATICFILES_DIRS = ( ''C:/Users/Dan/seminarWebsite/static/'', )

  4. Haga que la vista sea accesible agregando lo siguiente al final de urls.py :

    from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns += staticfiles_urlpatterns()

  5. Asegúrate de tener DEBUG = True en settings.py .

Eso es.

Si ejecuta su servidor dev ( ./manage.py runserver ), debería poder acceder a su archivo a través de http://localhost:8000/static/images/vision.jpeg (que sirve C:/Users/Dan/seminarWebsite/static/images/vision/jpeg ).

Enlace a archivos estáticos en sus plantillas

Hay dos formas de obtener un enlace correcto para sus archivos estáticos: usar la etiqueta de plantilla de archivos estáticos y hacer que STATIC_URL accesible a sus plantillas. Ya que has intentado esto último, nos atendremos a eso.

  1. Asegúrese de tener ''django.core.context_processors.static'' en TEMPLATE_CONTEXT_PROCESSORS . Si no ha redefinido TEMPLATE_CONTEXT_PROCESSORS entonces no hay nada que hacer ya que debería estar allí por defecto .

  2. Asegúrese de utilizar RequestContext al renderizar su plantilla. Ejemplo:

    from django.template import RequestContext # ... def some_view(request): # ... return render_to_response(''my_template.html'', { "foo" : "bar", # other context }, context_instance = RequestContext(request))

Ahora debería poder usar lo siguiente en su my_template.html :

<a href="{{ STATIC_URL }}images/vision.jpeg" />

Alojamiento de archivos estáticos en servidor de producción.

Si todos los archivos estáticos que necesita servir están almacenados en ese directorio ( C:/Users/Dan/seminarWebsite/static ), entonces ya casi está. Simplemente configura tu servidor web para alojar ese directorio en /static/ (o lo que sea que configures como STATIC_URL ) y listo.

Si tiene archivos dispersos en diferentes directorios y / o archivos estáticos específicos de la aplicación, entonces deberá clasificarlos.

  1. Establezca STATIC_ROOT en el directorio donde desea almacenar los archivos intercalados.

  2. Ejecute ./manage.py collectstatic para hacer la colación.

  3. Configure su servidor web para alojar ese directorio ( STATIC_ROOT ) en /static/ (o lo que establezca en STATIC_URL ).

Esto parece ser una fuente de mucha confusión a juzgar por la cantidad de títulos similares sobre el tema, sin embargo, al intentar todo lo que pude encontrar en archivos estáticos con el servidor de desarrollo django, ¡casi he perdido la esperanza!

Así que mis archivos estáticos son servidos desde C: / Users / Dan / seminarWebsite / static / , en los cuales tengo subcarpetas para imágenes, css, etc.

AJUSTES:

STATIC_ROOT = ''C:/Users/Dan/seminarWebsite/static/'' STATIC_URL = ''/static/''

La aplicación de archivos estáticos también está activa.

URLS:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns += staticfiles_urlpatterns()

MODELO:

"{{ STATIC_URL }}images/vision.jpeg"

Sin embargo, solo aparece un enlace roto y en esta dirección: http://127.0.0.1:8000/homepage/images/vision.jpeg y no creo que deba estar en esa dirección (página de inicio es el nombre de la url de la página archivo de imagen estática está siendo llamado a).