Django项目-天天生鲜--5.商品模块

1、了解FastDFS分布式文件系统

客户端要上传时去找tracker,tracker给它分配一台storage给它,分配给它以后,这个client就去连接storage的机器和端口,就把数据存到Volume2上。将来存完了以后,这台机器就会给它返回一个文件的id,这个文件id是识别这个图片的唯一标识,将来你要去做下载时,你必须携带这个文件的id,然后tracker就去解析这个文件的id,从而得知你这个图片存在哪台storage机器上,然后呢,他就会把这台机器的IP地址告诉client,然后你去那台机器去取就行了。显然这里面的tracker特别的关键,他作为管理者,无论是上传还是下载都离不开它,所以tracker必须搭建成集群,最少要启动3台以上,形成一个集群。
在这里插入图片描述

启动FastDFS的方法,需要的操作
(1)、修改如下的配置文件 (在/etc/fdfs目录中)
在这里插入图片描述
tracker_server=自己的ip地址:22122
(2)启动tracker、storage、nginx服务:
sudo service fdfs_trackerd start
sudo service fdfs_storaged start

sudo /usr/local/nginx/sbin/nginx

(3)执行如下命令测试是否成功
fdfs_upload_file /etc/fdfs/client.conf 要上传的图片文件
如果返回类似group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg的文件id则说明文件上传成功
在浏览器中可以用 127.0.0.1:8888/返回的文件id
访问图片
在这里插入图片描述

2、python对接fastdfs

进入fdfs_client-py-master.zip所在目录

pip install fdfs_client-py-master.zip
>>> from fdfs_client.client import Fdfs_client
>>> client = Fdfs_client('/etc/fdfs/client.conf')
>>> ret = client.upload_by_filename('test')
>>> ret
{'Group name':'group1','Status':'Upload successed.', 'Remote file_id':'group1/M00/00/00/
	wKjzh0_xaR63RExnAAAaDqbNk5E1398.py','Uploaded size':'6.0KB','Local file name':'test'
	, 'Storage IP':'192.168.243.133'}

3、项目上传图片和使用图片流程

在这里插入图片描述
海量存储,存储容量扩展方便。
文件内容重复。
结合nginx提高网站访问图片的效率。

4 、Django二次开发对接FastDFS

(1)、配置文件settings中加入如下配置
在这里插入图片描述
(2)、创建utils/fdfs 目录
在这里插入图片描述
(3)、storage.py文件中自定义文件存储类
在这里插入图片描述
在这里插入图片描述

5、商品首页

(1)、基本页面处理
动态给对象增加属性
在这里插入图片描述
(2)、 保存购物车信息的数据设计
在这里插入图片描述
(3)、页面静态化
把原本动态的页面处理结果保存成html文件,让用户直接访问这个生成出来的静态的html页面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)、使用缓存
将处理计算的结果先临时保存起来,下次使用的时候可以先直接使用,如果没有这个备份的数据,重新进行计算处理
将缓存数据保存在内存中 (本项目中保存在redis中)
cache
修改了数据库的数据,直接删除缓存
缓存要设置有效期
在这里插入图片描述

6、商品详情页

添加历史浏览记录:
在这里插入图片描述

7、商品列表页

(1)、分页
在这里插入图片描述
在这里插入图片描述
(2)、页码控制
在这里插入图片描述

8、商品搜索

在这里插入图片描述
1、安装与配置

(1) 安装python包。
        pip install django-haystack
        pip install whoosh
(2)在settings.py文件中注册应用haystack并做如下配置。
在这里插入图片描述
在这里插入图片描述
2、索引文件生成

(1)在goods应用目录下新建一个search_indexes.py文件,在其中定义一个商品索引类。
在这里插入图片描述
(2)在templates下面新建目录search/indexes/goods。
在这里插入图片描述
(3)在此目录下面新建一个文件goodssku_text.txt并编辑内容如下。
在这里插入图片描述
(4)使用命令生成索引文件

python manage.py rebuild_index

3、全文检索的使用
(1) 配置url。
在这里插入图片描述
(2)表单搜索时设置表单内容如下。
在这里插入图片描述
点击标题进行提交时,会通过haystack搜索数据。
(3)全文检索结果。
搜索出结果后,haystack会把搜索出的结果传递给templates/search目录下的search.html,传递的上下文包括:
query:搜索关键字
page:当前页的page对象 –>遍历page对象,获取到的是SearchResult类的实例对象,对象的属性object才是模型类的对象。
paginator:分页paginator对象
通过HAYSTACK_SEARCH_RESULTS_PER_PAGE 可以控制每页显示数量。
在这里插入图片描述
4、改变分词方式

(1)安装jieba分词模块。

pip install jieba

(2)找到虚拟环境py_django下的haystack目录。

/home/python/.virtualenvs/bj17_py3/lib/python3.5/site-packages/haystack/backends/

(3)在上面的目录中创建ChineseAnalyzer.py文件。

import jieba
from whoosh.analysis import Tokenizer, Token

class ChineseTokenizer(Tokenizer):
    def __call__(self, value, positions=False, chars=False,
                 keeporiginal=False, removestops=True,
                 start_pos=0, start_char=0, mode='', **kwargs):
        t = Token(positions, chars, removestops=removestops, mode=mode, **kwargs)
        seglist = jieba.cut(value, cut_all=True)
        for w in seglist:
            t.original = t.text = w
            t.boost = 1.0
            if positions:
                t.pos = start_pos + value.find(w)
            if chars:
                t.startchar = start_char + value.find(w)
                t.endchar = start_char + value.find(w) + len(w)
            yield t

def ChineseAnalyzer():
    return ChineseTokenizer()

(4)复制whoosh_backend.py文件,改为如下名称。

whoosh_cn_backend.py

(5)打开复制出来的新文件,引入中文分析类,内部采用jieba分词。

from .ChineseAnalyzer import ChineseAnalyzer

(6)更改词语分析类。

查找
analyzer=StemmingAnalyzer()
改为
analyzer=ChineseAnalyzer()

(7)修改settings.py文件中的配置项。
在这里插入图片描述
(8)重新创建索引数据

python manage.py rebuild_index
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值