Django自带文件存储系统存储在本地文件夹,如果我们将文件存储在云端,需要自定义文件存储系统。

自定义文件存储系统需要继承django.core.files.storage.Storage

from django.core.files.storage import Storage

class QiNiuStorage(Storage):

添加deconstructible装饰器以允许在迁移数据库时进行迁移

from django.utils.deconstruct import deconstructible

@deconstructible
class QiNiuStorage(Storage):

在配置文件中增加

# 七牛云存储图片文件
QINIU_ACCESS_KEY = "你的云平台秘钥"
QINIU_SECRET_KEY = "你的云平台私钥"
QINIU_BUCKET_NAME = "云平台空间名"
QINIU_BUCKET_DOMAIN = "http://云存储空间域名/" # 需要将域名拼接成完整的路径
DEFAULT_FILE_STORAGE = "云存储工具类路径"

重写django保存文件的默认方法,url方法返回文件完整路径,存储在数据库中

from django.conf import settings
from qiniu import Auth, put_data
@deconstructible
class QiNiuStorage(Storage):
def _open(self, name, model='rb'):
"""不用打开,代码省略"""
pass def _save(self, name, content):
    # content文件内容
if name is None:
name = content.name
try:
q = Auth(settings.QINIU_ACCESS_KEY, settings.QINIU_SECRET_KEY)
token = q.upload_token(settings.QINIU_BUCKET_NAME)
       # ret['key']存储文件名
ret, info = put_data(token, None, content.read())
print(ret, info)
except Exception as e:
raise e if info.status_code != 200:
raise Exception("上传图片失败") return settings.QINIU_BUCKET_DOMAIN + ret['key'] def url(self, name):
return name def exists(self, name):
"""七牛云自动解决文件重名问题"""
return False

Django中设置字段类型

logo = models.FileField(max_length=64, verbose_name="企业logo")

django中云存储静态文件的更多相关文章

  1. Django (七) token&静态文件&媒体文件

    token&静态文件&媒体文件 1. token 1. 会话技术 2. 服务端会话技术 3. 它实际上就是手动实现的session 4. 实现token 4.1 在models.py中 ...

  2. Django中对静态文件的支持(转)

    英文原文:[http://agiliq.com/blog/2013/03/serving-static-files-in-django/] 译文:[http://segmentfault.com/a/ ...

  3. Django基础二静态文件和ORM

    Django基础二静态文件和ORM 目录 Django基础二静态文件和ORM 1. 静态文件 1.1 静态文件基本配置: 1.2 静态文件进阶配置 2. request参数 3. Django配置数据 ...

  4. django中的静态文件

    静态文件 1.什么是静态文件 在django中静态文件是指那些图片.css样式.js样式.视频.音频等静态资源. 2.为什么要配置静态文件 这些静态文件往往不需要频繁的进行变动,如果我们将这些静态文件 ...

  5. Django中web开发用md5加密图片名并存储静态文件夹

    一般在开发中,有的网站存在大量图片,首先图片的名称是不能重复的, 但是除了数据库可用的id以外我们可以用time模块中time.time()获取的时间来进行md5加密操作, 因为time模块所产生的时 ...

  6. Django配置与静态文件

    settings.py """ Django settings for myproject project. Generated by 'django-admin sta ...

  7. Django: 配置和静态文件

    运行django-admin.py startproject [project-name] 命令会生成一系列文件,在django 1.6版本以后的settings.py文件中有以下语句: # Buil ...

  8. Django下配置静态文件以及渲染图片

    js,css,img等都叫做静态文件,那么关于django中静态文件的配置,我们就需要在setting配置文件里面写上下面这些内容: #STATIC_URL = '/xxx/' #别名,随便写的名字, ...

  9. 2.Django|简介与静态文件| URL控制器

    1.简介  MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业务对象与数 ...

随机推荐

  1. HYPERSPACE

    Windows中,不管是应用程序还是内核程序,都不能直接访问物理内存,所有非IO指令都只能访问虚拟内存地址,如Mov eax, DWORD PTR[虚拟地址]形式,但是,有时候,我们明明已经知道了某个 ...

  2. ResNet网络再剖析

    随着2018年秋季的到来,提前批和内推大军已经开始了,自己也成功得当了几次炮灰,不过在总结的过程中,越是了解到自己的不足,还是需要加油. 最近重新复习了resnet网络,又能发现一些新的理念,感觉很f ...

  3. wifi编辑 centos

    ifconfig -a sudo iw dev 设置名称 scan

  4. HTML+css基础认识

    标签:<div><span                                                                              ...

  5. winform程序中chart图的使用经验(chart图的更新)

    如何让chart图进行刷新并且根据数值重新绘制 首先初始化一个chart chart1.Titles.Add("柱状图数据分析"); chart1.ChartAreas[].Axi ...

  6. Shell 命令替换

    1.命令替换,有两种方式 方式一:`command` 方式二:$(command) 2.应用场景 在命令中通过命令替换的方式,将某些子命令的结果嵌入到当前命令中. 3.举例 例1: 获取系统所用用户并 ...

  7. 使用 <embed> 标签显示 flash文件(swf)格式 ,如何设置 width 和 height 宽度,高度.

    1. embed 标签 支持  .swf 格式.     .flv 的不支持. 2. 通常情况下, 网站中上传 多个 flash文件. 它的默认大小是不一样的. 而且 可以 宽度 大于 高度(横向的) ...

  8. Sublime Text 3 安装 Package Control

    1.打开sublime text 3 2.Ctrl+`打开控制台或者View->Show Console菜单打开命令行,输入下面这段代码后按Enter键 import urllib.reques ...

  9. 解决Exception in thread "main" java.nio.BufferOverflowException报错

    学习bytebuffer时,写了简单的demo报错: 错误的提示:Exception in thread "main" java.nio.BufferOverflowExcepti ...

  10. Go Lang

    IDE: https://www.jetbrains.com/products.html?fromMenu#type=ide Study: http://www.runoob.com/go/go-en ...