Manejo de archivos estáticos de Django

Prefacio

Los archivos estáticos de Django no pueden mostrar imágenes colocando directamente enlaces de imágenes como html, pero imágenes, css y js se conocen colectivamente como archivos estáticos.

Configurar archivos estáticos

Abra settings.py del proyecto y agregue django.contrib.staticfiles a INSTALLED_APPS:
Inserte la descripción de la imagen aquí

STATIC_URL

Ver en settings.py:

	STATIC_URL = '/static/'

Inserte la descripción de la imagen aquí
Aquí, para el STATIC_URLconjunto '/static/', especifica: Cada uno APPdentro del directorio de recursos estáticos.
En la plantilla, use la etiqueta de plantilla estática para 相对路径construir la URL basada en el bit de configuración STATICFILES_STORAGE .
(Es decir, la ruta relativa a estática en la aplicación)
Estructura del directorio:

mysite/
    mysite/
        setting.py
        ...
    blog/
       static/ # 这个目录,便是我们所设置的 STATIC_URL
       		blog/
                 /image
            		A.jpg
        ...    
	manage.py
	{
    
    % load static %}
	<img src="{% static "blog/image/A.jpg" %}" alt="My image">

STATICFILES_DIRS

Por lo general, todas las aplicaciones pueden usar archivos de recursos estáticos, como algunos .css, .js, * .png comunes , etc., como bootstrap.min.css, cópielos en cada blog / static / css / ¿Pegarlo de nuevo?

Obviamente, esto es incorrecto, por lo que STATICFILES_DIRS se usa para almacenar estos archivos de recursos estáticos públicos. Ahora configurémoslo:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

El nombre del directorio configurado aquí todavía se llama "estático" y se encuentra en el directorio raíz de todo el Proyecto (en el mismo directorio que manage.py):

mysite/ 
     mysite/
         setting.py 
         ...
      blog/
         static/ # STATIC_URL   
              blog/
                  /image
            		A.jpg
	manage.py 
	static/ # STATICFILES_DIR 
			/img
				A.jpg

Igual que STATIC_URL

	{
    
    % load static %}
	<img src="{% static "img/A.jpg" %}" alt="My image">

STATIC_ROOT

Este directorio es la mayor diferencia entre el modo de desarrollo de Django y el modo de producción.

Los recursos estáticos se configuran antes DEBUG = True, ¡ah, todos los archivos se cargan normalmente!

Cuando se implementa en un entorno de producción DEBUG = False, ¡ajá, por qué tantos 404!

En primer lugar, debe comprender que en el modo de desarrollo, Django encontrará los archivos estáticos correspondientes de acuerdo con la configuración de ruta relacionada con STATIC proporcionada, y responderá al cliente;

En un entorno de producción, Django ya no procesa archivos de recursos estáticos, necesita dejar que el servidor WEB maneje estos archivos estáticos.

Pero ahora, nuestros archivos están dispersos en / mysite / blog / static /, / mysite / static /, si está usando el administrador de Django, entonces los archivos estáticos relacionados con el administrador aún pueden estar en el código fuente de Django pacakage.

Por lo tanto, debemos recopilar estos archivos de recursos estáticos dispersos en una ubicación unificada. Esta ubicación es:STATIC_ROOT

	STATIC_ROOT = os.path.join(BASE_DIR, 'static_cdn')

Configurado STATIC_ROOTdespués de la ejecución de collectstatic, todo lo que registró con APP, los archivos estáticos se utilizan para recopilar su STATIC_ROOTdirectorio especificado :

	python manage.py collectstatic

Una vez completada la ejecución, se agregará static_cdn / al directorio raíz,
asumiendo que el servidor WEB utilizado es Nginx, y hemos implementado con éxito el proyecto Django.

Dado que STATIC_URL establecido por Django es '/ static /', el cliente seguirá siendo el mismo que en el modo de desarrollo, y la solicitud del archivo de recursos estáticos seguirá:

server_name/static/app_name/xxx.css

Por lo tanto, necesitamos alias el acceso de / static / a / static_cdn /:
Inserte la descripción de la imagen aquí
Restart:

service nginx reload

Supongo que te gusta

Origin blog.csdn.net/m0_43456002/article/details/106154880
Recomendado
Clasificación