Django项目实践(商城):十四、补充:Django文件存储类url()

在这里插入图片描述

(根据居然老师直播课内容整理)

一、Django文件存储类url()方法介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 结论:
    • 文件存储类url()方法的作用:返回name所代表的文件内容的URL。
    • 文件存储类url()方法的触发:content.image.url
      • 虽然表面上调用的是ImageField的url方法。但是内部会去调用文件存储类的url()方法。
    • 文件存储类url()方法的使用:
      • 我们可以通过自定义Django文件存储类达到重写url()方法的目的。
      • 自定义Django文件存储类必须提供url()方法。
      • 返回name所指的文件对应的绝对URL。

二、自定义Django文件存储类

1、重写Django文件存储类url()方法

class FastDFSStorage(Storage):
    """自定义文件存储系统,修改存储的方案"""
    def __init__(self, fdfs_base_url=None):
        """
        构造方法,可以不带参数,也可以携带参数
        :param base_url: Storage的IP
        """
        # if not fdfs_base_url:
        #     self.fdfs_base_url = settings.FDFS_BASE_URL
        # else:
        # 	  self.fdfs_base_url = fdfs_base_url
        self.fdfs_base_url = fdfs_base_url or settings.FDFS_BASE_URL
    def _open(self, name, mode='rb'):
        ......
    def _save(self, name, content):
        ......
    def url(self, name):
        """
        返回name所指文件的绝对URL
        :param name: 要读取文件的引用:group1/M00/00/00/wKhnnlxw_gmAcoWmAAEXU5wmjPs35.jpeg
        :return: http://192.168.103.158:8888/group1/M00/00/00/wKhnnlxw_gmAcoWmAAEXU5wmjPs35.jpeg
        """
        # return 'http://192.168.15.134.158:8888/' + name
        # return 'http://image.meiduo.site:8888/' + name
        return self.fdfs_base_url + name

2、相关配置参数

# 指定自定义的Django文件存储类
DEFAULT_FILE_STORAGE = 'lgshop.utils.fastdfs.fdfs_storage.FastDFSStorage'
# FastDFS相关参数
# FDFS_BASE_URL = 'http://192.168.15.134:8888/'
FDFS_BASE_URL = 'http://image.meiduo.site:8888/'

3、添加访问图片的域名

• 在/etc/hosts中添加访问Storage的域名

#Storage的IP        域名
192.168.15.134    image.meiduo.site

4、文件存储类url()方法的使用

• 以图片轮播图为例:content.image.url

<ul class="slide">
    {% for content in contents.index_lbt %}
    <li><a href="{
     
     { content.url }}"><img src="{
     
     { content.image.url }}" alt="{
     
     { content.title }}"></a></li>
    {% endfor %}
</ul>

5、开启虚拟机:打开storage tracker 页面可以展示出全部图片

  • 开启fastdfs服务
    在这里插入图片描述
  • 访问主页
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/laoluobo76/article/details/115180652
今日推荐