Django之云存储(一)

Django 专栏收录该内容
¥19.90 ¥99.00
59篇文章

一、介绍 

image-20221208145543310

用户上传的文件以及项目中使用的静态文件,除了保存在本地服务器,还在可以保存在云服务中,比如:

  • 阿里云
  • 七牛云(课程选用)
  • 亚马逊云
  • 等

1.1、使用方式

image-20221207020422688

二、封装七牛云工具类

image-20221208151350427

官网:Python SDK_SDK 下载_对象存储 - 七牛开发者中心

官网有提供使用七牛云的代码案例,具体方法如下:

image-20221208145707657

image-20221208145735487

2.1、封装代码

# -*- coding: utf-8 -*-


# pip install qiniu-7.9.0
from qiniu import Auth, put_data


def upload_file(ak,sk,file_data):
  '''
   ak: access_key
   sk: secret_key
   file_data: 上传的文件数据流
   '''
  #构建鉴权对象
  q = Auth(ak, sk)


  #要上传的空间
  bucket_name = 'djangofile1'


  #上传后保存的文件名
  # key如果指定,按照指定的名称存储,
  # key如果为空则以文件的hash值作为文件名
  # key = 'my-python-logo.png'
  key = None
  #生成上传 Token,可以指定过期时间等
  token = q.upload_token(bucket_name, key, 3600)


  #要上传文件的本地路径
  # localfile = './sync/bbb.jpg'


  # ret, info = put_file(token, key, localfile, version='v2') 
  ret,info = put_data(token,key,file_data)
  # print(f'{ret=}')
  # print(f'{info=}')
  if ret:
    print('上传成功')
  return ret.get('key')


if __name__ == '__main__':
  # 上传文件
  # 打开文件
  with open('qiniu_cloud5/a1.jpg','rb') as f:
    file_data = f.read()
    #需要填写你的 Access Key 和 Secret Key
    access_key = 'do0Ws6Yrq4H3feH1m0ukabj3XdwMkBE-dNwR8ZO0'
    secret_key = '2ZjprfTmDpQ3DVP4O7sEX0MBXs03Eh-bXhTPDf9L'
    # 开始上传
    filename = upload_file(access_key,secret_key,file_data)
    print(f'上传文件的名字是:{filename}')

 

三、Django使用云存储

image-20221208174630435

  • 建立项目

    django-admin startproject  project_demo
    
  • 创建子应用

    python manage.py startapp app_name
    
  • 修改配置文件,设置模板视图路径

    settings.py

    TEMPLATES = [
       {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
          'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
           ],
         },
       },
    ]
    
  • 建立逻辑视图

    from django.shortcuts import render
    
    
    from .models import Upload
    # Create your views here.
    def upload_file(request):
      if request.method == 'GET':
        return render(request,'upload.html')
      # 上传文件
      elif request.method == 'POST':
        # 获取上传的文件,如果没有文件,则默认为None
        file = request.FILES.get('file')
            
      return render(request,'show.html',{'upload':upload})
    
    
    def get_file(request,pk):
      # 获取文件
      upload = Upload.objects.get(pk=pk)
      return render(request,'show.html',{'upload':upload})
    
  • 建立路由地址

    from django.urls import path
    
    
    from . import views
    
    
    urlpatterns = [
      path('upload_file/', views.upload_file, name='upload_file'),
      path('get_file/<int:pk>/', views.get_file, name='get_file'),
    ]
    
  • 建立模板页面

    upload.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
      <h2>这个测试</h2>
      <form action="/upload_file/" method="post" enctype="multipart/form-data">
         {% csrf_token %}
        <input type="file" name="img"><br>
        <input type="text" name="desc"><br>
        <input type="submit" value="上传">
      </form>
      
    </body>
    </html>
    
  • show.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
      <ul>
        <li>图片名:{{img.name}}</li>
        <li>图片地址:{{img.url}}</li>
        <li><img src="{{img.url}}" alt=""></li>
      </ul>
    </body>
    </html>
    

Django结合七牛云实现对象云储存 掌握 storage 类的导入方式 掌握 storage 类的操作模式 学会 查看七牛的文档,并为自己所用 掌握七牛的空间的创建、秘钥的获取 文章目录目标前言1. 思路一2. 思路二2.学习 Storage 类的使用2.1 创建存储类2.2 添加装饰器2.3 了解Storage类2.4 获取参数2.5 完整代码 前言 在Django中结合第三方实现图片、文件上传的功能,现在能够实现的思路有两个,分析如下: 1. 思路一 思路: 利用七牛现有的api,单独实现一个功能模块,来完成文件对象存储。 阅读详情

相关推荐

Django上传图片到七牛云

七牛云存储 介绍: 七牛云存储是一个集图片、视频对象存储为一体的网站。并且他上面集成了cdn加速服务,图片处理(加水印,图片裁剪)等功能,对于一些想要快速开发产品,不想花大量时间来构建自己资源服务器的中小型公司而言,无疑是最好的选择。 准备工作: 到七牛官网:https://www.qiniu.com/。创建账号。然后到个人面板-&gt;秘钥管理处获取access_key和secret_k...

一个菜鸟的博客 1748

基于Django的多媒体管理系统设计与实现

多媒体管理系统是现代Web开发中的常见需求,它涉及文件存储、检索和权限管理等核心技术。Django作为Python的主流Web框架,凭借其ORM系统、Admin后台和丰富的第三方库支持,能够高效实现这类系统。本文以毕业设计项目为例,详细介绍了如何利用Django开发多媒体资料管理系统,包括文件上传与管理、预览播放、搜索功能和权限控制等核心模块的实现。系统采用MVC架构,前端使用Bootstrap+jQuery,后端基于Django REST Framework提供API接口。对于需要处理海量多媒体文件的教育

weixin_30859423的博客 344

python+ueditor+七牛云存储整合

开发环境:python pyramid。 参考网址:http://developer.qiniu.com/docs/v6/sdk/python-sdk.html,http://my.oschina.net/duoduo3369/blog/174655 项目中要将ueditor集成到网站,但是图片上传有问题。于是采取客户端(终端用户) => 七牛 => 业务服务器的方式来处理图片。详细的

liquanfeng326的专栏 3639

基于Django与Stripe构建视频会员订阅系统的实战指南

在构建在线内容付费平台时,会员订阅系统是核心模块,它涉及用户管理、支付集成与内容权限控制。其基本原理是通过后端服务整合支付网关的订阅API,并建立用户、订阅计划与受保护内容(如视频)之间的关联模型,以此实现自动化计费与访问控制。该技术的核心价值在于为数字内容创作者或教育平台提供了一套可定制、可扩展的变现解决方案,尤其适用于在线教育、知识付费等需要按订阅周期提供专属内容的场景。本文以Django框架和Stripe支付网关为例,深入剖析了如何从零搭建一套安全、可靠的视频会员订阅系统,涵盖了从Stripe Web

weixin_30443731的博客 452

Django多媒体资源管理系统开发实战

Web开发中,内容管理系统(CMS)是常见的技术需求,而多媒体资源管理则是CMS的核心模块之一。Django框架凭借其强大的ORM系统和内置Admin后台,成为开发此类系统的首选技术栈。通过模型设计、文件存储策略和权限控制等关键技术,可以构建高效的多媒体管理系统。该系统采用Python+Django+MySQL技术组合,实现了文件分类存储、元数据管理和智能检索等功能,特别适合作为计算机专业学生的课程设计项目。在实际工程中,还需考虑大文件分片上传、缩略图生成等实用技术,以及部署时的性能优化策略。

weixin_33739646的博客 700

django mdeditor修改上传图片的路径为腾讯云COS或七牛云

找到该文件,将下面的代码直接复制全文替换,默认为腾讯云,恢复注释掉的七牛云,注释腾讯云的cos即可换用七牛云。腾讯云COS的settings.py配置。

m0_52513940的博客 338

Django之云存储(二)

修改配置文件,设置模板视图路径。

Calor13的博客 353

Django 4.x File 文件上传使用示例和配置方法

大家好,我是Mr数据杨,如同三国演义中的郭嘉策划典韦破虏贼的战术,需要理解文件上传方式。有了一个明确的策略,才能精准地发动攻击。基本上传方式就像是典韦的大刀一般,直接而有效,适用于各种场景。而模板文件和视图文件views.py就是实施策略的利器。遇到了Form上传文件这个挑战,就像三国演义中周瑜面临的赤壁之战。需要一个完美的模型,就如同那火烧连环船的计划一样。模型文件models.py就像是战船,表单验证forms.py和视图文件views.py则如同锁链和火把,联手确保攻势顺利进行。

Mr数据杨 3万+

生产环境django MEDIA_URL 和 MEDIA_ROOT 如何配置

在生产环境中,处理用户上传文件的最佳实践是使用一个独立的静态文件服务器(如 Nginx 或 Apache)来服务这些文件,而不是通过 Django 自带的开发服务器。生产环境中配置MEDIA_URL和MEDIA_ROOT。

u010674101的专栏 383

Python之actinis-django-storages包语法、参数和实际应用案例

`actinis-django-storages` 是一个基于 Django 框架的扩展包,主要用于集成各种云存储服务(如 AWS S3、Google Cloud Storage、Azure Blob Storage 等),实现 Django 项目中静态文件(static files)和媒体文件(media files)的云存储管理。它是对 `django-storages` 包的扩展,提供了更多适配和优化功能。

王国平的博客 457

基于Django的宠物社交小程序设计与实现

随着移动互联网的快速发展,宠物社交类应用越来越受到宠物爱好者的欢迎。本文将详细介绍如何使用Django框架设计和实现一个名为"爱抚宠物"的微信小程序后端系统。文章将从需求分析、系统设计、技术选型、数据库设计、API接口实现到部署上线,全面阐述开发过程,并提供详细的代码示例。关键词:Django,微信小程序,宠物社交,RESTful API,云计算本文详细介绍了基于Django的"爱抚宠物"微信小程序后端系统的设计与实现。

2201_76125393的博客 328

Django 4.x Static 静态文件使用示例和配置方法

大家好,我是Mr数据杨。让我带领大家穿越到三国时期,来一起学习Django如何使用静态文件。现在就像是主角郭嘉需要布置一场战场,其中的每一个元素,如兵器、战车,都是静态文件。郭嘉需要在中进行配置,就像他必须对战场有详细的规划和配置。在模板中使用静态文件,就像他在战场上有效地利用各种资源,把他们放在最需要的地方。郭嘉需要检查配置是否生效。如果兵器未按他的计划放置,那么他的策略可能会失败。静态文件配置参数的作用就好比郭嘉的各种策略。

Mr数据杨 3万+

海外最新AI营销AI销售书籍推荐AI营销培训讲师AI销售培训讲师人工智能营销培训师人工智能销售培训师AI赋能营销培训AI赋能销售培训企业AI营销内训企业AI销售内训AI营销课程讲师AI销售课程讲师

专栏|AI营销与AI销售实战 · 第46期在这个人类与算法共舞的时代,销售,已经不是你我熟悉的那个“打电话、见客户、做PPT”的老行当了。你还以为销售是“打感情牌”?错了,情感要继续,但方式已经升级。你还以为AI只是“写写文案”?错了,文案只是皮毛,真正的杀器,是思维方式的重构,是认知地图的重绘。首先,我们需要明确一个事实:AI并不会消灭销售这个职业,但它必然会重新定义销售的本质。在销售领域,真正的制胜之道不是简单地采用AI工具,而是的能力。

Akibfrycc的博客 1102

OAI数据集申请与实战:从权限获取到医学影像分析应用

本文详细介绍了OAI数据集的申请流程与医学影像分析实战应用。从NDA账户注册、数据下载技巧到骨盆X光关键点检测的完整实现,帮助医学研究者高效利用这一权威骨关节炎数据集。特别分享使用Pei Y标注数据训练U-Net模型的经验,包括预处理、注意力机制优化等实用技巧。

weixin_30275415的博客 480

FRM模型五:Brinson业绩归因

利用Brinson对基金组合业绩进行归因分析。

stonesssssss的博客 3007

从课堂笔记到动手实践:用Multisim仿真高频谐振功放(丙类)的完整流程

本文详细介绍了使用Multisim仿真高频谐振功放(丙类)的完整流程,从仿真环境准备到电路搭建、偏置网络设计、信号注入与波形观测,再到效率优化与性能验证。通过14个关键操作步骤,帮助读者将高频电子线路的理论知识转化为动手实践,深入理解丙类功放的非线性工作状态和效率优化技巧。

weixin_30701575的博客 521

用deepseek对GPU服务器进行压力测试

利用 DeepSeek 模型对 GPU 服务器进行压力测试,核心思路是通过,验证 GPU 服务器在计算、显存、网络等维度的承载能力,同时观察稳定性与性能瓶颈。

weixin_42795092的博客 1610

GIS坐标系转换以及空间校正和地理配准

许多小伙伴都对坐标系,投影这类问题迷迷糊糊,我之前也一样,现在总结一下。 坐标系的转换1.为什么要进行坐标系的转换?2. 不同坐标系的介绍1.地理坐标系我国常见的地理坐标(1).北京54坐标系(2).西安80坐标系(3).WGS-84坐标系(4).大地2000坐标系2.投影坐标系我国常用的投影坐标系(1) UTM投影(2) 高斯-克吕格投影(3) 兰伯特投影(4) 阿尔伯斯投影投影坐标系的选择3. 坐标系的转换1.已知坐标系之间的转换1.1 两坐标系的参考椭球相同1.2 两坐标系的参考椭球不一致,但是GIS

m0_47258611的博客 8913

Jupyter Lab 无法启动 Kernel 问题排查与解决总结

使用 curl,telnet,或 Python websocket-client 库可以本地模拟 WebSocket 握手行为,帮助分析服务端响应状态。避免使用 http:// + ws:// 组合方式部署 Jupyter Lab,特别是在远程或跨域访问场景。建议统一采用 https:// + wss:// 方式部署,确保浏览器信任并兼容。确认 WebSocket 已升级为 wss://,内核可正常启动。但在远程访问时,浏览器出于安全策略,默认拒绝 ws:// 协议。

weixin_43866043的博客 1859

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: Django之文件上传(二)
下一篇: Django之云存储(二)
菜鸟之编程
博客等级 码龄7年 589粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

菜鸟之编程

您的支持将成为我的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值