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