Django使用第三方存储服务器

韦熙云
2023-12-01

现在的网站基本都需要上传文件,包括图片、音视频、文件等,慢慢地网站存储空间越来越少,使用这些文件时也占用大量服务器流量,由此使用第三方存储服务器很有必要,例如七牛、阿里云OSS、亚马逊S3等。将文件放到存储服务器,可以减少服务器负担,服务器只剩下必要的静态文件和源代码。

一、Django使用阿里云OSS存储服务器

1、安装oss2库,该库是Python对应oss的操作库。

pip install oss2

2、安装或下载Django OSS的Storage库。

这些库是继承Django的Storage类,并重写相关方法。Django的Stroage是管理上传文件的存储。如何自定义Storage可参考Django官方文档

执行如下命令,安装Django-Aliyun-OSS2-Storage:

pip install django-aliyun-oss2-storage

也可以打开该第三方库的Github,下载源码到本地。

3、配置Django的Settings,添加如下设置:

Django Aliyun OSS2 Storage 需要以下几个配置才能正常工作。这些配置通过可以环境变量或 settings.py 来设置。环境变量的优先级要高于 settings.py 。BUCKET_NAME是Bucket的名字,如果该bucket不存在,程序会自动创建。BUCKET_ACL_TYPE用于设置Bucket的权限,可以设置为private, public-readpublic-read-write

ACCESS_KEY_ID = "40ZhE1HyuWdllpMh"
ACCESS_KEY_SECRET = "KbxtlKSvKyuyuymTiQvrxhsYFMguXy"
END_POINT = "oss-us-west-1.aliyuncs.com"
BUCKET_NAME = "XXXX"
ALIYUN_OSS_CNAME = "" # 自定义域名,如果不需要可以不填写
BUCKET_ACL_TYPE = "private" # private, public-read, public-read-write

# mediafile将自动上传
DEFAULT_FILE_STORAGE = 'aliyun_oss2_storage.backends.AliyunMediaStorage'
# staticfile将自动上传
STATICFILES_STORAGE = 'aliyun_oss2_storage.backends.AliyunStaticStorage'

参考文档:https://help.aliyun.com/document_detail/32026.html?spm=a2c4g.11186623.3.3.63df58cau4eO9P

OSS Python SDK如创建存储空间、上传文件、下载文件等

二、django使用七牛云存储

1、安装django-qiniu-storage

pip install django-qiniu-storage

2、配置 setting.py

QINIU_ACCESS_KEY = 'XXXXXXXXXXXXXXXt'
QINIU_SECRET_KEY = 'XXXXXXXXXXXXXXXtf'
QINIU_BUCKET_NAME = 'feiutech'
QINIU_BUCKET_DOMAIN = 'imahe.feiutech.com/'
QINIU_SECURE_URL = False #使用http
PREFIX_URL = 'http://'
MEDIA_URL = PREFIX_URL + QINIU_BUCKET_DOMAIN + '/media/' 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 

DEFAULT_FILE_STORAGE = 'qiniustorage.backends.QiniuMediaStorage' 

3、静态文件也放到七牛云,配置:

STATIC_URL = QINIU_BUCKET_DOMAIN + '/static/' 
# STATIC_URL = '/static/'
STATICFILES_DIRS = [ 
    os.path.join(BASE_DIR, 'static'), 
 ] 
STATIC_ROOT = os.path.join(BASE_DIR, 'static') 
STATICFILES_STORAGE = 'qiniustorage.backends.QiniuStaticStorage'

运行命令

python manage.py collectstatic

app/static和工程/static都将上传七牛云。

参考文章

https://developer.qiniu.com/kodo/sdk/1242/python

https://blog.csdn.net/wzyaiwl/article/details/90340345

 

 类似资料: