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. 分享:五个非常有用的WP插件

    一全老师(www.yiquanseo.com)认为非常有用的几款WP插件,用WordPress做站的可以看下,估计你很可能用得到! 第一款WooCommerce Page Builder: 这款插件是 ...

  2. STL空间配置器、vector、list、deque、map复习

    本文写于2017-03-03,从老账号迁移到本账号,原文地址:https://www.cnblogs.com/huangweiyang/p/6440830.html STL的六大组件:容器.算法.迭代 ...

  3. 004dayPython学习输入并输出用户名和密码

    在python 2.7中,捕获用户输入用raw_input 一.捕获并打印用户名和密码 要求: 输入用户名和密码都可见 # -*- coding:utf-8 -*-userName = raw_inp ...

  4. Mysql 存储过程查询结果赋值到变量的方法

    drop table if exists test_tbl; create table test_tbl (name varchar(20), status int(2)); insert into ...

  5. 用几句话说一说CMake add_dependencies & target_link_libraries的使用区别

    简单说一说前两天学习使用CMake解决链接问题时遇到的一个问题. 对于编译时遇到的依赖问题,很多时候我们只需要一句target_link_libraries就可以搞定. 但是CMake还有另外一个co ...

  6. HTML 基于 Python 实现分页功能

    前面的话: 1. 网页引用的bootstrap 中的表格,所以需要引入样式类 2. 第一次写文章,不喜勿喷.有不足的地方,可留言我改正,在此先谢过. HTML代码: <!DOCTYPE html ...

  7. C# FTP操作报550错误

    最近在做FTP创建文件夹和上传文件的功能,测试之后一直提示“远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)”,我在网上找了很久的解决方案也没有解决掉这个问题,网上找到的 ...

  8. java.lang.NoSuchMethodError: org.springframework.util.StreamUtils.emptyInput()Ljava/io/InputStream;

    今天写用spring的MockMvc测试controller的demo时出现了这个错误,条件反射的进行了百度,没有搜到匹配的答案,但给了一些解决问题的思路:首先NoSuchMethodError要不就 ...

  9. python面向对象之静态属性/静态方法/类方法/组合

    继续学习,不要松懈 #!/usr/bin/env python # coding:utf-8 class Campus: def __init__(self,name,addr,type): self ...

  10. golang对不同系统的编译

    Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能. Mac下编译 # mac编译linux执行文件 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go ...