详情页标题前

腾讯云对象存储使用 Django + COS 实现 Web 应用的云存储方案

详情页1

简介

Django 是一个基于 Python 的开源 Web 应用框架,它的出现极大地简化了 Web 应用的开发过程。为了更好地满足现代 Web 应用的需求,Django 提供了很多扩展功能,其中包括云存储。本文主要介绍如何使用 COS 插件实现远程附件功能,将 Django 应用的数据存储在腾讯云 对象存储(Cloud Object Storage,COS)上。

前提条件

1. 已有 COS 存储桶。如无,可参见 创建存储桶 操作指引。2. 已创建服务器。例如云服务器(Cloud Virtual Machine,CVM)。相关指引可参见 CVM 产品文档

环境依赖

Python 版本:大于等于3.8版本。Django 版本:大于等于2.2,小于3.3版本。

实践步骤

创建 COS 存储桶

1. 创建一个访问权限为公有读私有写的存储桶,存储桶的地域建议与运行 Django 的 CVM 地域相同,创建详情请参见 创建存储桶 文档2. 在存储桶列表中找到刚刚创建的存储桶,并获取存储桶名称,例如 examplebucket-1250000000。

创建 Django

1. 前往 PyCharm 官网,并按照您所使用的系统选择对应的 PyCharm 版本。2. 安装后打开 PyCharm,单击 NEW project 或者 create project,选择下面的 Django。

腾讯云对象存储使用 Django + COS 实现 Web 应用的云存储方案

3. 创建后,在您的目录下找到并打开 setting.py 文件。

腾讯云对象存储使用 Django + COS 实现 Web 应用的云存储方案

4. 将以下代码复制粘贴进去,并按照参数说明进行 COS 服务配置:

DEFAULT_FILE_STORAGE = "django_cos_storage.TencentCOSStorage"
TENCENTCOS_STORAGE = { "BUCKET": "xxx", "CONFIG": { "Region": "ap-guangzhou", "SecretId": "xxxx", "SecretKey": "xxxx", }}

参数说明如下:

配置项 配置值
Bucket 创建存储桶时自定义的名称,例如 examplebucket-1250000000。
Region 创建存储桶时所选择的地域。
SecretId 访问密钥信息,可前往 API 密钥 中创建和获取,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。详情请参见 子账号访问密钥管理
SecretKey 访问密钥信息,可前往 云 API 密钥 中创建和获取,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。详情请参见 子账号访问密钥管理

下载和配置 COS 插件

1. 前往 Github 下载 COS 插件。下载后将 django_cos_storage 这个目录解压到 django 项目的目录下。说明如需查看其插件信息,打开 terminal,输入 pip freeze,即可查看其模块信息。2. 在 django_cos_storage 目录下创建一个 py 文件,例如 COSStorage.py。

腾讯云对象存储使用 Django + COS 实现 Web 应用的云存储方案


将以下代码复制粘贴进去:

from .storage import TencentCOSStoragefrom functools import wraps
def decorator(cls):
instance = None @wraps(cls) def inner(*args,**kwargs): nonlocal instance if not instance: instance=cls(*args,**kwargs) return instance return inner
@decoratorclass QFStorage: def __init__(self): pass self.storage =TencentCOSStorage() self.bucket =self.storage.bucket self.client =self.storage.client
#上传对象 def upload_file(self, Key, LocalFilePath, PartSize=1, MAXThread=5, EnableMD5=False): # try: response =self.client.upload_file( Bucket=self.bucket, Key=Key, LocalFilePath=LocalFilePath, PartSize=PartSize, MAXThread=MAXThread, EnableMD5=EnableMD5 ) return response except Exception as e: print('上传对象失败,error:',e) return None

3. 打开 app_cos 目录下的 views.py。

腾讯云对象存储使用 Django + COS 实现 Web 应用的云存储方案

将以下代码复制粘贴进去:

from django.shortcuts import render,redirectfrom django.http import HttpResponsefrom django_cos_storage.COSStorage import QFStoragefrom django.conf import settings

#上传对象
def upload_file_view(request): response=QFStorage().upload_file( Key='1.png', LocalFilePath=settings.BASE_DIR / 'cessu/1.png' )
if response: return HttpResponse('上传文件成功!') return HttpResponse('上传文件失败')

注意这里示例中 cessu/1.png 表示创建文件夹 cessu,然后将图片1.png 上传到 cessu 文件夹中。上传成功后,您可以在 COS 存储桶的 cessu 文件夹中找到图片1.png。4. 在 djangoProject2 目录下找到并打开 urls.py。

腾讯云对象存储使用 Django + COS 实现 Web 应用的云存储方案

将代码复制粘贴进去:

from django.contrib import adminfrom django.urls import pathfrom app_cos.views import *
urlpatterns = [ path('admin/', admin.site.urls),
path('upload_file/', upload_file_view),
]

5. 在 terminal 中输入 python manage.py createsuperuser,按照提示输入账号密码即可。

腾讯云对象存储使用 Django + COS 实现 Web 应用的云存储方案

6. 然后在 terminal 中输入 python .\manage.py runserver 运行。

腾讯云对象存储使用 Django + COS 实现 Web 应用的云存储方案

7. 打开网站http://127.0.0.1:8000/admin/,并输入刚才设置的账号密码即可完成登录。

腾讯云对象存储使用 Django + COS 实现 Web 应用的云存储方案

注意若打开网站提示报错如下:

腾讯云对象存储使用 Django + COS 实现 Web 应用的云存储方案


返回 pycharm,重新打开 terminal,依次输入如下:

python manage.py makemigrationspython manage.py migrate


最后在 terminal 中输入 python .\manage.py runserver 运行,然后打开 http://127.0.0.1:8000/admin/ 即可。

验证 Django 附件存储到 COS

1. 访问 http://127.0.0.1:8000/upload_file,完成上传文件操作。当提示如下图所示,则表示上传成功。

腾讯云对象存储使用 Django + COS 实现 Web 应用的云存储方案

2. 登录 COS 控制台,选择之前创建的存储桶,在 cessu 路径下即可看到已上传的图片。

结语

当然,COS 不仅提供以上应用和服务,还提供多款热门开源应用,并集成腾讯云 COS 插件,欢迎点击“此处”一键启动,立即使用!
对象存储官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/144682.html

(0)
上一篇 2023年12月9日 上午1:49
下一篇 2023年12月9日 上午1:50
详情页2

相关推荐

  • 阿里云大数据开发治理平台 DataWorks基于MaxCompute进行大数据BI分析-云淘科技

    您可以通过阿里云MaxCompute、云数据库RDS MySQL、DataWorks等产品进行数据分析,且可以通过Quick BI进行可视化展示。 概述 本实践以电商行业为例,通过MaxCompute、DataWorks对业务数据和日志数据进行ETL处理,并同步至分析型数据库MySQL(AnalyticDB for MySQL)进行实时分析后,再通过Quic…

    2023年12月10日
  • 阿里云RDS数据库删除数据库-云淘科技

    本文介绍如何删除RDS PostgreSQL的数据库。 操作步骤 说明 删除数据库后,系统将自动回收数据库使用空间。您可以通过监控与告警查看磁盘使用量,查看方法请参见查看增强监控。 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。 在左侧导航栏单击数据库管理。 找到要删除的数据库,单击其右侧操作列中的删除。 在弹出的确认框中,单击确定。 在弹出的对…

    阿里云数据库 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云对象存储图片二维码

    简介 本文档提供关于对象存储图片二维码相关的 API 概览以及 SDK 示例代码。 API 操作描述 二维码识别 二维码识别功能可识别图片中有效二维码的位置及内容,输出图像中二维码包含的文本信息(每个二维码对应的 URL 或文本),并可对识别出的二维码添加马赛克 二维码识别 对象存储二维码识别功能可识别图片中有效二维码的位置及内容,输出图像中二维码包含的文本…

    腾讯云 2023年12月9日
  • 腾讯云轻量应用服务器使用 VNC 方式登录 Linux 实例云小二

    操作场景 VNC 登录是腾讯云为用户提供的一种通过 Web 浏览器远程连接实例的方式。在没有安装或者无法使用远程登录客户端,以及通过其他方式均无法登录的情况下,用户可以通过 VNC 登录连接到实例,观察实例状态,并进行基本的管理操作。 使用限制 VNC 暂时不支持中文输入法以及文件的上传、下载。VNC 登录实例时,需要使用主流浏览器,例如 Chrome,Fi…

    2023年12月9日
  • 阿里云ECS云服务器API FAQ-云淘科技

    本文汇总了使用ECS API时的高频问题。 什么是ECS API? 创建ECS实例时报错:InvalidDataDiskCategory.NotSupported 创建多台ECS实例时如何设置有序的实例名称或者主机名称? 如何创建有公网IP地址的ECS实例? 通过API创建的ECS实例,为什么无法Ping通ECS实例? ECS API绑定公网IP报错:The…

    阿里云服务器 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。