181.基于Django的云文件存储使用方式——七牛云存储

1.文件云存储

1.1 概述

在Django项目中,用户上传的文件以及项目中使用的静态文件,默认读书存储本地,保存在服务器中,但是,其实我们也可以将他们保存在云存储中,譬如七牛云存储、阿里云存储、亚马逊云存储等
本次我们将使用七牛云存储

1.2 环境搭建

首先,我们创建django项目,具体操作流程可以看本专栏的前几节内容。
然后,配置好splite数据库(默认配置好了),然后在Navicate中创建数据库
配置settings,urls和model
迁移数据库
创建后台管理用户admin
model

from django.db import models

# Create your models here.
class UploadFileImg(models.Model):
    file = models.FileField(upload_to='files/')
    img = models.ImageField(upload_to='imgs/')
    remark = models.CharField(max_length=100)

根urls

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('cloud_app/',include('cloud_app.urls'))
]

from django.conf import settings
from django.conf.urls.static import static
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

settings

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

前端页面显示
views

from django.shortcuts import render
from cloud_app.models import *
# Create your views here.
def file_admin(request, pk):
    # 根据pk获取模型对象
    uploadFileImg = UploadFileImg.objects.get(pk=pk)
    return render(request, "cloud_app/file_admin.html", {'uploadFileImg':uploadFileImg})

templates

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>admin管理的文件显示</title>
</head>

<body>
    <ul>
        <li>
            备注:{{ uploadFileImg.remark }}
        </li>
        <li>
            图片名:{{ uploadFileImg.img.name }}
        </li>
        <li>
            <img src="{{uploadFileImg.img.url }}">
        </li>
        <li>
            <a href="{{uploadFileImg.file.url }}">{{uploadFileImg.file.name }}</a>
        </li>
    </ul>
</body>

</html>

2.七牛云存储

2.1 注册七牛

  1. 注册七牛云存储https://www.qiniu.com/
  2. 登陆后,访问个人中心>>密钥管理,可以查到两个key:
    • AK
    • SK
  3. 进行实名认证
  4. 在对象存储中,创建存储空间,得到两个key,空间名(自己设置,譬如lhbstorage)、域名(譬如:日534u0ef.hb-bkt.clouddn.com)
    在这里插入图片描述

2.2 新建存储空间

新建出空间,得到空间名、域名和上文得pk和sk即可
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3. 七牛云存储存储上传文件

安装模块

pip install django-qiniu-storage == 2.3.1

settings

# 七牛云存储配置
# 对应密钥管理中的 AK
QINIU_ACCESS_KEY = 'aaA2cDcdohLREq5fLi82T-2e8pFdMnYlb4hsTsFT'
# 对应密钥管理中的 SK
QINIU_SECRET_KEY = 'xL7kJBafmZkvnh9P0cHedZAfadO8OvH0ELih6oD8' 
# 对应存储空间中的空间名
QINIU_BUCKET_NAME = 'lhbstorage'
# 对应存储空间中的域名
QINIU_BUCKET_DOMAIN = 'rmo65ufwh.hn-bkt.clouddn.com'

说明:
其他的配置项都是七牛云存储私有的,和普通的本地存储的区别就
是3个参数的修改:

  • MEDIA_ROOT:从普通的:os.path.join(BASE_DIR, ‘media’) 修改为 ‘/media/’ ,那么存储的默认位置就是
    QINIU_BUCKET_DOMAIN + MEDIA_ROOT
  • MEDIA_URL: 从普通的 ‘/media/’ 修改为 PREFIX_URL +QINIU_BUCKET_DOMAIN + MEDIA_ROOT, 由于使用七牛云存储,因此和我们本身项目的域名不同,因此只能使用绝对路径,而不是普通存储那样的相对路径
  • DEFAULT_FILE_STORAGE: 这个是重点,因为最终文件的存储,就是由这个类实现的,从默认的 本地存储类修改为 七牛云的存储类,七牛的存储类有3种:
    • qiniustorage.backends.QiniuStorage:文件将存放在bucket的根目录下
    • qiniustorage.backends.QiniuMediaStorage:文件将存放在bucket/MEDIA_ROOT目录下
    • qiniustorage.backends.QiniuStaticStorage:文件将存放在bucket/STATIC_ROOT目录下

同样的方式,上传文件
此时就会保存到七牛云存储中
在这里插入图片描述

4. 七牛云存储静态文件

在项目中我们也可以云存储保存我们的所有静态文件,只需要几步就可以实现
settings

# 七牛云存储保存静态文件
# 在云存储中保存文件前置path
STATIC_ROOT = '/static/'
# 静态文件的url访问路径前置的path
STATIC_URL = QINIU_BUCKET_DOMAIN + STATIC_ROOT
# 静态文件存储使用的存储类
STATICFILES_STORAGE = 'qiniustorage.backends.QiniuStaticStorage'

在cmd执行命令
合并静态文件
在这里插入图片描述

效果展示
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想成为数据分析师的开发工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值