一、简介
这里说明如何使用 COS 插件实现远程附件功能,将 Django 应用的数据存储在腾讯云 对象存储(Cloud Object Storage,COS)上。
二、前提条件
·已有 COS 存储桶。如无,可参见 创建存储桶 操作指引。
·已创建服务器。例如云服务器(Cloud Virtual Machine,CVM)。相关指引可参见 CVM 产品文档。
三、环境依赖
·Python 版本:大于等于3.8版本。这篇以 Python 3.12.0版本举例说明。
·COS Python 版本:大于等于1.9.31版本。安装方法请参见 COS Python SDK 快速入门。这篇以 COS Python 1.9.31版本举例说明。
·Django 版本:大于等于2.2,小于3.3版本。这篇以3.2.18版本举例说明。
四、创建 COS 存储桶
1. 创建一个访问权限为公有读私有写的存储桶,存储桶的地域建议与运行 Django 的 CVM 地域相同,创建详情请参见 创建存储桶 文档。
2. 在存储桶列表中找到刚刚创建的存储桶,并获取存储桶名称,例如 examplebucket-1250000000。
五、创建 Django
1. 前往 PyCharm 页面,并按照你所使用的 CVM 系统选择对应的 PyCharm 版本。
2. 在 CVM 中安装后打开 PyCharm,单击 NEW project 或者 create project,选择下面的 Django。
3. 创建后,在你的目录下找到并打开 setting.py 文件。
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。
将以下代码复制粘贴进去。
from .storage import TencentCOSStoragefrom functools import wrapsdef 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。
将以下代码复制粘贴进去。
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 表示要上传的本地文件1.png位于项目目录下的 cessu 文件夹中 。上传成功后,你可以在 COS 存储桶的 cessu 文件夹中找到图片1.png。
4. 在 djangoProject2 目录下找到并打开 urls.py。
将代码复制粘贴进去。
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 migrate并执行。
6. 在 terminal 中输入 python manage.py createsuperuser,按照提示输入账号密码即可。
注意:如果执行python manage.py createsuperuser时提示缺少 pkg_resources,请执行安装命令pip install setuptools进行解决。
7. 然后在 terminal 中输入 python .\\manage.py runserver 运行。
8. 打开网站http://127.0.0.1:8000/admin/,并输入刚才设置的账号密码即可完成登录。
注意:若打开网站提示报错如下:
返回 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,完成上传文件操作。当提示如下所示,则表示上传成功。
2. 登录 COS 控制台,选择之前创建的存储桶,在 cessu 路径下即可看到已上传的图片。
八、结语
当然,COS 不仅提供以上应用和服务,还提供多款热门开源应用,并集成腾讯云 COS 插件,欢迎点击“此处”一键启动,立即使用!