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. Bouml快速使用指南

    一.Bouml简介 Android 系统中有大量Java.C++代码,继承以及依赖关系非常复杂,Bouml可以用c++.Java.Idl.Php和Python建模及生成代码,反之也可通过uml工具更好 ...

  2. cin.get();cin.clear();cin.sync()

    先看代码: #include<iostream> using namespace std; int main(){ int c,x; cout<<"输入大小" ...

  3. Java赋值

    public class Car { 方法1: private String 品牌="初始化值"; private String 价格; 方法2: public Car(Strin ...

  4. c++中,如果访问数组越界,程序可能会意外终止(像死循环)

    #include<iostream> using namespace std; ];// int main(){ vis[]=;//访问越界 ; } 程序错误表现:

  5. Object.assign的用法

    工作中使用的Object.assign 类的赋值 var initData = { a:'', b:'' } var oldData = { a:'ww', b:'ee' } var newData ...

  6. Java连接Oracle12c

  7. CSS内嵌样式实现打字效果

    <style> *{margin:0;padding:0;} @keyframes typing { from { width: 0; } } @keyframes blink-caret ...

  8. VBA在WORD应用中如何将格式应用于选定内容

    下列示例使用 Selection 属性将字符和段落格式应用于选定文本.使用 Font 属性获得字体格式的属性和方法,使用 ParagraphFormat 属性获得段落格式的属性和方法. Sub For ...

  9. 计算机网路中CDP,LLDP,STP的详解

    CDP,LLDP,STP知识详解 (1) CDP CDP(Cisco Discovery Protoco:Cisco发现协议)是Cisco专有的用来发现邻接点的协议 ,所有的Cisco产品都支持CDP ...

  10. Windows 下Redis的部署 及key 过期事件

    window下Redis部署,下载安装完成之后,进入到redis目录: 1.修改配置文件redis.windows.service.conf配置密码 requirepass myRedis (注意在R ...