django -七牛云对象存储

django部署七牛云对象储存服务器

https://portal.qiniu.com/bucket/

图片的存储除了上次搭建的fastdfs分布系统可用,还可以借助七牛云这个平台。我们进入七牛云并实名认证后,他就会每月免费提供10G的存储空间,供开发这测试使用。

下面讲解下如何使用js、python来实现在七牛云上的图片存储。可以参考文档SDK

一、获取关键参数

  • 获取AK、SK

在七牛云平台实名认证后,我们需要进入个人中心,点击密钥管理,并将AK和SK这两个值复制保存好,因为在后面django搭建七牛云时会用到。

img

  • 创建存储空间

img

img

  • 拿到测试域名CDN

img

二、安装相应包

  • 安装七牛云

在django项目环境下,执行下面命令。

pip install django-qiniu-storage==2.3.1
# django-qiniu-storage >= 2.0都会出现BUG需要手动改源码才可以完成

三、配置django设置

# 如果要设置为灵活可切换状态可以这样写
QINIU = True  # DEBUG下面最好
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/
# 静态文件相关
STATIC_URL = '/static/'  # 见七牛静态文件部署
STATICFILES_DIRS = [
    # os.path.join(BASE_DIR, 'static'),  # 这里的静态文件需要转移到别的地方,最好自己的app下
]

# 富文本编辑器文件上传设置  文件上传相关
MEDIA_URL = '/media/'  
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')  # 见七牛静态文件部署
CKEDITOR_UPLOAD_PATH = 'upload/'

# 七牛静态文件储存
if QINIU:
    del MEDIA_URL, MEDIA_ROOT, STATIC_URL
    QINIU_ACCESS_KEY = 'bm-V0IyKPuFLRWJengvWtXvDC8Gx5BQhCN0kIBrE'  # 个人中心 > 密钥管理 > AK
    QINIU_SECRET_KEY = 'FYaPq_T81VDCK4-c5Ad-hRf6myQ_zuq1cywD2D4P'   # 个人中心 > 密钥管理 > SK
    QINIU_BUCKET_NAME = 'bucket0415'  # 空间名
    QINIU_BUCKET_DOMAIN = 'api.donghaiming.cn'  # 融合 CDN 域名
    QINIU_SECURE_URL = False  # 使用http
    PREFIX_URL = 'http://'

    # 文件系统更改
    DEFAULT_FILE_STORAGE = 'qiniustorage.backends.QiniuMediaStorage'
    MEDIA_URL = PREFIX_URL + QINIU_BUCKET_DOMAIN + "/media/"
    MEDIA_ROOT = 'media'

    # 静态文件部分
    STATIC_URL = QINIU_BUCKET_DOMAIN + '/static/'
    STATIC_ROOT = 'static'  # 自己想要的前缀默认static
    STATICFILES_STORAGE = 'qiniustorage.backends.QiniuStaticStorage'

四、更改qiniustorage的源码

# 当前环境/site-packages/qiniustorage/backends.py
# Ctrl + F 搜索 _normalize_name 函数 注释函数内所有内容,改为
return ("%s/%s"% (self.location, name.lstrip('/'))).lstrip('/')
# Ctrl + F 搜索 QiniuStaticStorage 类 
location = settings.STATIC_ROOT or "static"  # 原
# 改为
location = settings.STATIC_ROOT  # 新

五 、收集静态文件储存至七牛云对象服务器

python manage.py collectstatic 
# yes 等待上传完成
关于迁移图片类型数据库里面的文件,参考 qshell

https://developer.qiniu.com/kodo/tools/1302/qshell

关于配置完成,无法范围本地静态文件

配置完成以后无法访问本地静态文件
所有模板统一采用

{% load static %}
<a href="{{picture.url}}">首页</a>

这种方式来渲染URL连接
这种方式将无法再连接,

<script src="/static/js/slide.js"></script>

服务器会拒绝连接

原文地址:https://www.cnblogs.com/lichaoya/p/13744585.html