Django项目之Web端电商网站的实战开发(四)

本文详细介绍了如何在Windows环境下安装FastDFS_Client,以及Django项目中对接FastDFS的步骤,包括配置、上传文件测试、自定义Django存储系统等。此外,还展示了如何创建和优化天天生鲜电商网站的首页,包括类视图的使用、数据获取与展示、静态页面生成等。
摘要由CSDN通过智能技术生成

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!

接着上一篇博客继续往下写 :Django项目之Web端电商网站的实战开发(三)_cdtaogang's blog-CSDN博客

非VIP用户请点击这里进行查阅

目录

一丶Windows环境下安装FastDFS_Client

二丶Django二次开发对接FastDFS

三丶天天生鲜首页


一丶Windows环境下安装FastDFS_Client

1.在windows环境下直接使用pip install fdfs-client-py进行安装则会出现以下提示

 2.在windows环境下需进行如下安装

  • step1 下载fdfs_client包百度网盘,提取码moz7
  • step2 将解压之后的fdfs_client文件夹copy到python解释器下的Lib目录中

  • step3 进入fdfs_client目录,编辑storage_client.py文件,将第12行代码注释(避免提示ImportError: No module named sendfile错误信息)  

  • step4 安装mutagen

  •  step5 安装requests 

  • step6 在解释器目录下新建logs文件夹,用于存放fdfs客户端日志文件

  • step7 修改fdfs配置文件client.conf,需要注意的是base_path的路径是在以client.conf为起始路径进行查找的

 

  • step8 回到虚拟机ubuntu(192.168.1.10),开启fdfs服务以及nginx服务

  • step9 进行上传文件测试,打开cmd命令窗口,进行python2环境(博主将一个水果图片直接放在D盘中然后进行此图片上传操作),配置文件路径以及要上传的文件路径均为绝对路径
from fdfs_client.client import Fdfs_client
client = Fdfs_client(r"D:\Python27\Lib\fdfs_client\client.conf")
client.upload_by_filename(r"D:\goods.jpg")

  • step10 上传成功后,返回文件id,在windows浏览器中直接访问ubuntu电脑的ip(也就是nginx服务器的ip端口,然后nginx再去到fdfs系统中获取对应文件id的文件,最后返回给浏览器,最后浏览器将该文件渲染出来,最终显示出图片)http://192.168.1.10:8888/group1//M00/00/00/wKgBClygfSuAO8GOAAAX1PFRdzg942.jpg,如下图可以看见响应报头中的server为在ubuntu中安装的nginx版本

  • step11 同样的在ubuntu系统中访问该上传成功的文件id,一样成功的在浏览器中显示出来(这里的IP就要写本地的IP)

二丶Django二次开发对接FastDFS

1.项目中使用上传图片使用图片流程图

2.更改django默认上传文件的存储方式 ,django站点管理中进行文件的上传默认使用的是FileSystemStorage类,这个类在本地文件系统上实现了基本的文件存储功能,它继承自Storage类 ,并且提供父类的所有公共方法的实现,所以可以定义一个类来继承Storage类,重写这个类中方法来实现更改django的默认存储方式,可以参考django的API文档

3.编写一个自定义存储系统,

  • step1 自定义的存储系统必须为 Django.core.files.storage.Storage的一个子类
from django.core.files.storage import Storage

class MyStorage(Storage):
    ...
  • step2 在你的存储类中,除了其他自定义的方法外,还必须实现 _open()打开文件 以及 _save()保存文件方法,如果你的类提供了本地文件存储,它必须重载 path() 方法
  • step3 在项目utils目录下创建一个fdfs的python包,并在这个包下创建storage.py模块,在这个模块中实现自定义存储系统

  • step4 在storage.py中定义一个类继承与storage的子类Stroage,实现_open()以及_save()方法

  •  step5 导入Fdfs_client类,将client.conf配置文件拷贝到utils/fdfs目录下

  •  step6 修改client.conf配置文件中
base_path=D:\Python27\logs
  • step7 因为项目中场景不使用_open方法,只是用_save方法,所以在_save进行编写,创建Fdfs_client对象
client = Fdfs_client(r"./utils/fdfs/client.conf")
  • step8 上传文件到FastDFS系统中,upload_by_buffer方法是上传文件内容,而不是文件名了
res = client.upload_by_buffer(content.read())
  • step9 判断是否上传成功
# 上传成功返回的字段数据
"""
dict
{
    'Group name': group_name,
    'Remote file_id': remote_file_id,
    'Status': 'Upload successed.',
    'Local file name': '',
    'Uploaded size': upload_size,
    'Storage IP': storage_ip
}
"""
if res.get("Status") != "Upload successed.":
    # 表示上传失败
    raise
  • step10 上传成功获取文件id,并返回
filename = res.get("Remote file_id")
return filename
  • step11 重写exists方法调用_save方法之前会去调用exists方法,判断文件在系统中是够存在
 def exists(self, name):
        """如果提供的名称所引用的文件在文件系统中存在,则返回True,否则如果这个名称可用于新文件,返回False"""
        # 因为在django中不存在文件名情况,所以直接返回false
        return False

4.在django admin后台管理页面测试文件存储类

  • step1 在settings配置文件中设置django文件存储类为上面定义的类
DEFAULT_FILE_STORAGE = "utils.fdfs.storage.FDFSStorage"
  • step2 在df_goods/admin中注册商品类型模型类
from django.contrib import admin
from df_goods.models import GoodsType

# 注册商品类型模型类
admin.site.register(GoodsType)
  • step3 创建超级管理员

  • step4 在浏览器输入
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cdtaogang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值