Solución al principio de carga de Django
Una mejor solución es utilizar servidores de almacenamiento de terceros, como Qiniu, Alibaba Cloud OSS, Amazon S3, etc. Colocar todos los archivos en estos servidores de almacenamiento puede reducir la carga del servidor. Sólo los archivos estáticos y el código necesarios permanecen en el servidor.
Tome Alibaba Cloud OSS como ejemplo para explicar cómo utilizar un servidor de almacenamiento de terceros. (Acabo de usar esto recientemente. Django tiene una biblioteca de terceros escrita por otros).
En primer lugar, necesitas tener OSS. Simplemente vaya a Alibaba Cloud para comprarlo. Después de la compra, podrá obtener una serie de información como, por ejemplo, claves.
A continuación, instale la biblioteca oss2. La biblioteca oss 2 es la biblioteca de operaciones para OSS correspondiente a Python.
Luego instala o descarga el repositorio Django OSS. Estas bibliotecas son clases de almacenamiento que heredan Django y anulan los métodos relevantes. El almacenamiento de Django gestiona el almacenamiento de archivos cargados. Cómo personalizar el almacenamiento puede consultar la documentación oficial de Django.
Ejecute el siguiente comando para instalar Django-Aliyun-OSS2-Storage:
También puede instalarlo sin pip, abrir el Github de la biblioteca de terceros y descargar el código fuente. código localmente. Es necesario modificar parte del código aquí, así que descárguelo directamente y coloque el paquete completo en el directorio raíz del proyecto Django (u otra ubicación).
Una vez completada la instalación y descarga, configure los ajustes de Django y agregue las siguientes configuraciones:
Además, hay dos parámetros correspondientes a los que prestar atención, MEDIA_ROOT y MEDIA_URL.
MEDIA_ROOT es el directorio raíz para cargar archivos multimedia. Debido a que BUCKET_NAME está configurado, generalmente está en este BUCKET. Se puede configurar como una cadena vacía.
El archivo se cargará naturalmente en la ubicación upload_to establecida en el campo FileField de la plantilla de Django.
MEDIA_URL es el prefijo de enlace para obtener archivos multimedia, que se puede agregar según la posición del enlace del archivo oss.
BUCKET_ACL_TYPE está configurado como público * * * porque los archivos cargados requieren que los usuarios los descarguen. Si sus archivos estáticos también necesitan cargarse en OSS, la configuración es la siguiente:
Después de que la configuración sea correcta, reinicie Django para usarlo. Los archivos cargados se cargarán automáticamente en OSS.
Como se mencionó anteriormente, quiero modificar el código fuente interno. Porque al descargar, se descubrió que el nombre del archivo cargado era una cadena de caracteres confusos, no el nombre del archivo cuando se cargó. Esto requiere configurar cierta información del encabezado. Consulte la documentación del SDK de OSS. Al cargar archivos, debe enviar encabezados, pero el django-aliyun-oss2-storage anterior no escribe la información del encabezado al cargar archivos.
Abra el archivo fuente backends.py del paquete y busque el método _save de la clase AliyunBaseStorage. Modifique de la siguiente manera:
Para esta configuración, haga clic en el enlace del archivo para descargar. El nombre del archivo descargado es el nombre del archivo cargado. Si no necesita procesar todo tipo de archivos como este, puede determinar el sufijo del nombre del archivo a procesar.