django -- 文件上传至七牛云


青梅枯萎,竹马老去,从此我爱上的人都像你


说明

因为考虑到本地存储的不方便性,于是在上网找到了相关的插件 django-qiniu-storage

官网:http://django-qiniu-storage.readthedocs.io/zh_CN/latest/


各项配置

  1. 安装
pip install django-qiniu-storage

安装的时候出现了超时连接的问题,于是就使用了国内镜像安装

pip  install --index https://pypi.mirrors.ustc.edu.cn/simple/ django-qiniu-storage 

有意思的是,这个插件竟然不用放到 settting.py 中的 INSTALLED_APPS

  1. 登录或者注册七牛云获取以下数据,具体地操作可以自行百度
QINIU_ACCESS_KEY = '**'    # AK
QINIU_SECRET_KEY = '**'    # SK
QINIU_BUCKET_NAME = 'django'   # 存储空间名字
QINIU_BUCKET_DOMAIN = 'p9w6udf2c.bkt.clouddn.com' # 外链的前缀
  1. 配置 settings.py
QINIU_ACCESS_KEY = '**'
QINIU_SECRET_KEY = '**'
QINIU_BUCKET_NAME = 'django'
QINIU_BUCKET_DOMAIN = 'p9w6udf2c.bkt.clouddn.com'
QINIU_SECURE_URL = False   # 使用http

# http://p9w6udf2c.bkt.clouddn.com/10-18818.jpg

PREFIX_URL = 'http://'

MEDIA_URL = PREFIX_URL + QINIU_BUCKET_DOMAIN + '/media/'
#MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_ROOT = 'media/'

DEFAULT_FILE_STORAGE = 'qiniustorage.backends.QiniuMediaStorage'

这里需要注意的是 MEDIA_ROOT 的值不要还是按照原来本地文件上传时的配置,MEDIA_ROOT = os.path.join(BASE_DIR, 'media'),这样会失败的

参考:https://www.jianshu.com/p/6b543668462b

  1. 配置 models
class Article(models.Model):
    #image = models.FileField() # 这里什么参数都不用