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

news2024/11/24 8:53:25

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执行命令
合并静态文件
在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/79993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全】提防黑客来“敲门”

前言 互联网在给我们带来便捷高效的同时&#xff0c;也给一些不法分子提供了可乘之机。网络诈骗、窃取个人信息等花样层出不穷&#xff0c;骚扰电话、垃圾短信扰乱着我们的正常生活&#xff0c;使网络空间抹上一笔灰色。网络安全与每个人都息息相关&#xff0c;所以我们必须理…

Python测试进阶(三)

文章目录性能测试JMeter测试计划模拟并发结果分析分布式性能监控grafanaFluxPrometheus小结性能测试 为什么做性能测试&#xff1f;主要是解决这些问题 什么是性能测试 模拟多个用户的操作&#xff0c;看对服务器性能的影响 指标 TPS&#xff1a;transaction per secondRT&…

基于Kubeadm快速部署一个K8s集群

目录kubeadm概述安装要求准备环境安装kubelet、kubeadm、kubectl使用kubeadm引导集群下载各个机器需要的镜像初始化主节点安装网络组件常用shell命令测试kubernetes集群部署dashboardkubeadm概述 kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通…

索引创建、删除的sql语句

目录 创建索引 使用ALTER TABLE 语句创建索引 使用CREATE TABLE 语句创建索引 删除索引 使用ALTER TABLE 语句删除索引 使用DROP INDEX 语句删除索引 创建索引 1、创建表的同时&#xff0c;指定给某个字段创建索引&#xff08;name&#xff09; create table cat(id …

SaaS 产品的文档策略

作者&#xff1a;Vaijayanti Nerkar 和 Priya Shetye&#xff0c;BMC Software 几年前&#xff0c;当 BMC Software 决定进军 SaaS 市场时&#xff0c;该公司开始投资开发基于云的产品。20多年来&#xff0c;BMC Software 产品都是典型的本地产品&#xff0c;因此&#xff0c;…

2022.12.11-YOLOv5使用NCNN将模型部署到Android端教程(1)部署自己的训练模型到Android实现静态图片检测

文章目录1. 前言2. 模型转换2.1. NCNN2.1.1. 简介2.1.2. ncnn2.1.3. ncnn-android-yolov52.2. 项目准备2.2.1. 安装Android studio2.2.2. 下载解压源码2.3. 安卓源码重新编译2.3.1. 构建工程2.3.2. 修改源码2.3.2.1. 修改CMakeLists.txt中的路径2.3.2.2. 重新重新ysnc project2…

【华为上机真题 2022】相对开音节

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

【无需注册账号】只需两步, Ai Studio上也可以玩[ChatGPT]了

☆ 只需两步&#xff0c; Ai Studio上也可以玩[ChatGPT]了 ☆ 无需账号即可体验喽~ 体验地址 只需两步&#xff0c; Ai Studio上也可以玩[ChatGPT]了 文章目录☆ 只需两步&#xff0c; Ai Studio上也可以玩[ChatGPT]了 ☆0 Fork后进入项目应用中心体验☆本页面下方体验☆注意…

5G无线技术基础自学系列 | 勘测准备

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 基站在详细的勘测之前需要做的准备包括…

CN_UDP协议

文章目录UDP协议UDP概述UDP的首部格式UDP数据报封装入IP数据报UDP校验伪首部真首部UDP数据报处理例UDP vs TCPUDP协议 User Datagram Protocol - Wikipedia 1Attributes2Ports3UDP datagram structure4Checksum computation 4.1IPv4 pseudo header4.2IPv6 pseudo header 5Reli…

百度安全查询,查询网址是否存在百度安全风险的方法

如果网站被百度安全识别为风险网站&#xff0c;或者是提示该页面可能存在虚假信息&#xff0c;该页面可能已被非法篡改&#xff0c;那么就不妙了。 怎样才能知道自己的网是否存在百度安全风险&#xff1f; 查询网站百度安全的方法: 第一步、打开SEO综合查询工具 第二步、添加…

[附源码]Python计算机毕业设计SSM基于的校园失物招领平台(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

线程池 (通俗易懂)

线程池一、线程池是什么二、标准库中的线程池三、实现线程池3.1 思路与细节3.2 完整代码四、标准库里的构造方法一、线程池是什么 之前我们已经认识过"池"&#xff1a;String&#xff0c;字符串常量池&#xff1b;MySQL JDBC&#xff0c;数据库连接池(DataSource)……

【案例实践】EKMA曲线及大气O3来源解析

【查看原文】EKMA曲线及大气O3来源解析实践技术应用 目前&#xff0c;大气臭氧污染成为我国“十四五”期间亟待解决的环境问题。臭氧污染不仅对气候有重要影响&#xff0c;而且对人体健康、植物生长均有严重损害。为了高效、精准地治理区域大气臭氧污染&#xff0c;首先需要了…

【OpenCV学习】第14课:边缘检测与自定义线性滤波(卷积, Rebert算子, Sobel算子, 拉普拉斯算子)

仅自学做笔记用,后续有错误会更改 参考文章&#xff1a;http://t.zoukankan.com/whw1314-p-12007928.html 理论 卷积的概念&#xff1a; 在图像上使用卷积的目的&#xff1a;模糊图像&#xff0c; 提取边缘轮廓&#xff0c; 图像锐化等 卷积如何工作&#xff1a; 下边给出…

MATLB|基于燃料电池混合动力汽车双层凸优化

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清…

算法基础篇-01-时间复杂度和空间复杂度

1. 用什么表示算法的运行快慢&#xff1f; n 代表是算法里面的问题规模&#xff0c;n越大&#xff0c;运算越慢&#xff0c;比如n1和n100肯定是不一样的&#xff1b;机器不一样&#xff0c;相同的算法代码运行所消耗的时间也不一样&#xff1b; 2. 借用生活中的案例 类比生活中…

[附源码]Python计算机毕业设计SSM基于的校园卡管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

鸿蒙开发初体验以及遇到的几点坑

今天尝试了一下鸿蒙开发&#xff0c;有一些经验跟大家进行分享。建议大家先看完我的文章&#xff0c;再去尝试鸿蒙。 我安装好了开发工具&#xff0c;并且跑通了Hello World程序。同时&#xff0c;我还跑通了小鸿网课Java版本项目&#xff1a; 感觉&#xff0c;还好吧… 操作…

[附源码]Python计算机毕业设计SSM基于的小型房屋租赁平台(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…