【django】新闻模块——自定义Django文件存储类 【28】

导读:本篇文章讲解 【django】新闻模块——自定义Django文件存储类 【28】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

存在问题

⽬前读取⽂章默认图⽚地址为group1/M00/00/00/wKgVjV_jT7GAO7pxAAPUTVc4GU8518.png,⻚⾯中⽆法读取?
在这里插入图片描述
解决⽅案1:在相应img标签上拼接链接。
解决⽅案2:⾃定义Django⽂件存储类

default_img默认返回的是相对地址;目标是获得绝对地址;重写ImageField字段中的url方法,在url方法默认返回的是相对地址,只要在路径前再拼接一个路径即可,
url被property装饰器装饰后,直接可以用default_img.url去获取相对地址

一、创建⽂件存储类

项⽬包⽬录/utils/fastdfs/fdfs_storage.py
在这里插入图片描述

from django.conf import settings
from django.core.files.storage import Storage

class FastDFSStorage(Storage):
    '''自定义文件存储系统'''

    def __init__(self,fdfs_base_url=None):
        '''
        构造方法,可以不带参数,也可以携带参数
        :param fdfs_base_url: Storage的IP
        '''
        self.fdfs_base_url=fdfs_base_url or settings.FDFS_BASE_URL

    def url(self,name):
        '''
        返回name所指文件的绝对url
        :param name: 图片存在数据库中的相对路径
        :return:
        '''
        return self.fdfs_base_url+name

二、dev.py文件中完善配置⽂件

#文件存储类相关配置
DEFAULT_FILE_STORAGE='mgproject.utils.fastdfs.fdfs_storage.FastDFSStorage'
FDFS_BASE_URL='http://192.168.17.129:8888/'

三、编辑⻚⾯获取图⽚链接地址

{% for article in articles %}
      <div class="blog-item">
      <div class="post-format">
          <a href="#">
              <img src="{{ article.default_img.url }}" alt="img">
          </a>
      </div>

四、⻚⾯访问后显示图⽚绝对路径

<img src="http://images.nagle.cn:8888/group1/M00/00/00/wKgVjV_jUFqAYzZbAAFNF-5NQK4351.png" alt="img">

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74074.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!