django-ckeditor上传图片到阿里云OSS

参考信息

资料1: django_ckeditor上传图片到七牛云OSS

使用

1. 安装django-ckeditor 【参考 资料1

2. setting.py配置INSTALLED_APPS 【参考 资料1

3. 编写ckeditor_storage.py

class AliyunStorageObject(Storage):
    def __init__(self):
        self.now = datetime.datetime.now()
        self.file = None

    def _new_name(self, name):
        new_name = "file/{0}/{1}.{2}".format(self.now.strftime("%Y/%m/%d"), str(uuid.uuid4()).replace('-', ''),
                                            name.split(".").pop())
        return new_name

    def _open(self, name, mode):
        return self.file

    def _save(self, name, content):
"""
        上传文件到阿里云
"""
        # 构建对象
        bucket = oss2.Bucket(oss2.Auth(ALIYUN_ACCESS_KEY_ID, ALIYUN_ACCESS_KEY_SECRET), ALIYUN_END_POINT, ALIYUN_BUCKET_NAME)
        self.file = content
        file_data = content.file
        file_name = self._new_name(name)
        info = bucket.put_object(file_name, file_data.read())

        if info.status == 200:
            base_url = bucket.sign_url('GET', file_name, 60*60*24)
            # 表示上传成功, 返回文件名
            return base_url
        else:
            # 上传失败
            logger.error(f'{info.error}')
            raise Exception("上传阿里云失败")

    def exists(self, name):
        # 验证文件是否存在,因为会去生成一个新的名字存储到七牛,所以没有必要验证
        return False

    def url(self, name):
        # 上传完之后,已经返回的是全路径了
        return name

4. setting.py中设置ckeditor

图片保存路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
MEDIA_URL = '/media/'
X_FRAME_OPTIONS = 'SAMEORIGIN'

阿里云OSS相关配置
ALIYUN_ACCESS_KEY_ID = ""
ALIYUN_ACCESS_KEY_SECRET = ""
ALIYUN_END_POINT = ""
ALIYUN_BUCKET_NAME = ""
ALIYUN_OSS_CNAME = ""   # 自定义域名,如果不需要可以不填写
ALIYUN_BUCKET_ACL_TYPE = "public-read"     # private, public-read, public-read-write

OSS配置
DEFAULT_FILE_STORAGE = 'blog.ckeditor_storage.AliyunStorageObject'

5. setting.py中配置功能项和样式 【参考 资料1

6. 设置model.py 【参考 资料1

7. 设置urls.py 【参考 资料1

8. 测试

django-ckeditor上传图片到阿里云OSS

Hole yor life get everything if you never give up.

Original: https://www.cnblogs.com/1fengchen1/p/15069742.html
Author: SonnyZhang
Title: django-ckeditor上传图片到阿里云OSS

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590899/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 第一篇博客

    这是我在博客园的第一篇博客,用来纪念以下,同时也是写博客的试水标记 Original: https://www.cnblogs.com/zht1702/p/15081310.htm…

    数据库 2023年6月14日
    066
  • 建议收藏备查!MySQL 常见错误代码说明

    先给大家看几个实例的错误分析与解决方案。 1.ERROR 2002 (HY000): Can’t connect to local MySQL server throu…

    数据库 2023年6月9日
    0129
  • 深入浅出的分析 Properties

    作者:炸鸡可乐原文出处:www.pzblog.cn 一、摘要 在集合系列的第一章,咱们了解到,Map 的实现类有 HashMap、LinkedHashMap、TreeMap、Ide…

    数据库 2023年6月14日
    078
  • 2022-8-19 第六组 JDBC(2)

    PreparedStatement:执行sql的对象 1. SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题 1. &#x8F93…

    数据库 2023年6月14日
    093
  • CentOS之—双网卡双IP双网关配置

    修改对应网卡的DNS的配置文件 <span class=”hljs-section”># vim /etc/resolv.conf</span> 修改以下内…

    数据库 2023年6月11日
    090
  • 什么是真正的HTAP?(一)背景篇

    To digitally transform the business, AI must be real-time. For AI to be real-time, we need…

    数据库 2023年5月24日
    094
  • mysql约束

    一、表约束 PK主键约束(索引)唯一约束 非空 默认值 在关系数据库,一个表中,只能有一个主键(Primary Key),有些数据库没有pk,系统报出错误。 在myql数据库,建立…

    数据库 2023年6月9日
    083
  • 代码圈复杂度

    回到我们日常的写代码的场景,我们一直在说系统很复杂,那到底什么是系统复杂度呢?最近几天,一直在改项目里别人写的代码,某些方法复杂无注释。怎么才能写的一手可读,可扩展,可维护[注1]…

    数据库 2023年6月14日
    090
  • 如何使用原生的Ribbon

    什么是Ribbon 之前分析了如何使用原生的Feign,今天我们来研究 Netflix 团队开发的另外一个类库–Ribbon。Ribbon 和 Feign 有很多相似的…

    数据库 2023年6月6日
    090
  • ORA-01950: no privileges on tablespace ‘USERS’– 解决办法

    ORA-01950: no privileges on tablespace ‘USERS’ 原因: 在表空间 “USERS” 无权…

    数据库 2023年6月14日
    0105
  • 剑指 Offer II 091. 粉刷房子

    剑指 Offer II 091. 粉刷房子 动态规划当前粉刷房子的花费可以由上一家粉刷房子的花费推导出来,所以可以使用动态规划求解这道题。首先确定dp数组的含义,每个房子都可以被粉…

    数据库 2023年6月16日
    0101
  • MySQL中varchar(1)的解读(辟谣)

    MySQL中varchar(1)的解读(辟谣) 网上有如下错误解读: 在mysql中, varchar(n)和char(n)表示n个字符。不管是中文还是英文,MySQL都可以存储n…

    数据库 2023年6月14日
    0115
  • 牛客SQL刷题第三趴——SQL必知必会

    【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回在描述中以先后顺序同时出现 toy 和 carrots …

    数据库 2023年6月16日
    097
  • 模板语法之标签

    语法 {% &#x5F00;&#x59CB;&#x6807;&#x7B7E; %} …. {% &#x7ED3;&#x675F;…

    数据库 2023年6月14日
    0128
  • Mysql 实现数据库读写分离

    一、Amoeba 是什么 Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、…

    数据库 2023年6月14日
    083
  • zabbix自定义监控(mysql主从状态和延迟)

    zabbix自定义监控 需要先配置mysql主从,从库上需要安装zabbix_agentdzabbix_server配置zabbix_agentd配置mysql主从配置 监控mys…

    数据库 2023年6月14日
    080
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球