013 天天生鲜项目简略中

36商品模型类概述(其实这个我看完页面静态化才过来看的,百度云的视频把这两块弄混了,要先看首页,才看静态化)

首先是index页面的继承(base.html) image.png

然后是view视图 image.png

url的配置 image.png

image.png

下面进行详细的配置 37 首页内容获取和展示

image.png image.png image.png 38 redis存储购物车记录分析 保存购物车信息的数据设计 image.png image.png HLEN key http://redis.cn/commands/hlen.html

image.png image.png image.png

下面进行一个模拟:分别看一下未登录跟登录的状态 我们首先连接mysql数据库看一下我们用户的id image.png

image.png

image.png image.png

39 首页的

39 首页页面静态化 (用户没登录时显示的界面静态的) image.png 写一个新的celery的tasks任务 image.png 这里需要在模板中新建两个模板html image.png

image.png image.png

image.png image.png

40 配置ngnix提交静态页面

image.png

image.png 上面的有中文路径不行 image.png 这个随手测试

image.png 这个就是吧项目拷贝一份放置到英文路径下

image.png 重启nginx image.png

可以看到有两个监听一个是80端口,一个是8888端口,这个页面中的图片是nginx进行提供的 image.png

image.png

由于自己使用windows比较多,还是需要把除了django服务器之外的组件放到另一台电脑的虚拟机上,下面是改动的地方

安装依赖包

  1. 安装需要的包(就是那一些django等前面用到的)
  2. 安装fdfs(注意新建的虚拟机没有GCC,以及make需要进行安装,并且注意安装过一次的是需要重新解压的,有些包被剪切了) 3.由于是新安装的虚拟机一些依赖没有安装,要进行安装 参考网址https://www.jb51.net/article/80468.htm 以及https://blog.csdn.net/wu_cai_/article/details/80278611

mysql数据库的配置

  1. 远程虚拟机创建数据库 image.png
  2. 设置远程登录的权限 image.png
  3. 本机远程登录测试 image.png
  4. 项目数据库的更改 image.png

redis数据库的配置(参考redis的课件)

  1. 首先绑定虚拟机的ip Redis的配置信息在/etc/redis/redis.conf下。 查看 sudo gedit /etc/redis/redis.conf 绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip bind 127.0.0.1 改成 bind 192.168.124.77 自己的虚拟机ip地址
  2. 重启redis 重启 sudo service redis restart
  3. 可以看到ip地址已经改变 image.png 4.修改celery发送邮件绑定的redis的ip image.png 同时改变邮件激活绑定的ip image.png 改变redis缓存绑定的ip image.png

  4. 配置Django缓存数据库 image.png

配置fdfs服务器的ip

image.png image.png

迁移数据库

image.png image.png

将项目复制一份放到虚拟机上,开启celer任务

image.png

注册测试

image.png image.png 收到注册激活邮件 image.png image.png image.png image.png

redis缓存配置查看

1.远程连接redis的命令 redis-cli -h 192.168.124.77 -p 6379 2.查看 image.png

创建后台管理员

image.png

image.png

配置nginx80端口的配置

image.png 重启nginx

生成一个静态的index页面

image.png

image.png

image.png

在本机的浏览器测试

image.png image.png

终于配置好了我的ubuntu虚拟机以及windows 日常使用不得不用windows也是很无奈啊

41 admin管理更新首页数据表时重新生成index静态页面

为了实现这个功能我们需要在admin中进行admin.Modeladmin的继承类.实现这个功能 image.png

image.png

image.png 可以看到又多了一张图片 下面在试一次 image.png 再次进行修改的时候静态页面发生了改变 看一下celery的任务改变 image.png

但是我们用多了好多的表,但是我们要是所有的管理类需要重写就很麻烦,就抽象父类然后进行继承 image.png image.png 其实就是下面这个流程 image.png

42 静态index页面和 index View的调度 实际部署服务器,不能让用户直接访问nginx服务器的ip地址 这里就牵扯一个问题,我们首页的返回是静态页面还是我们的index view的视图 这时候就需要一个nginx调度服务器 给用户暴露的ip就是nginx的ip 最后的任务调度应该是这样的 image.png 目前先做到这样就ok了,后面会继续做的 image.png

43 首页数据缓存设置和获取

页面数据的缓存: 把页面使用的数据存放在缓存中,当再次使用这些数据的时,先从缓存中获取,如果获取不到,再去查询数据库,减少数据库查询的次数 image.png

参考:https://yiyibooks.cn/xx/django_182/topics/cache.html

image.png

image.png

image.png

image.png

开始设置缓存 image.png image.png image.png image.png image.png image.png image.png 更新缓存 什么时候需要更新首页的缓存数据? 当管理员后台修改首页信息对应的表格中的数据的时候,需要更新首页的缓存数据 直接在admin前面配置的更新index静态页面的时候进行缓存的清除就ok了 image.png

为什么要设置缓存页面的过期时间呢? 假设后台管理员这里没有清除缓存,我们设置了缓存过期时间,那么过期了我们就可以避免一直不更新后台的数据

44 总结

1.网站本身性能的优化,减少数据的查询的次数. 首页页面的静态化,页面数据的缓存 2.防止恶意的功能,DDOS攻击 如果没有设置缓存,那么这么多的请求会导致数据库直接就崩了

45 详情页的设计

46 商品详情信息的获取和显示 image.png image.png

最终要实现的效果 image.png

简单的设计 image.png image.png image.png image.png image.png

由于数据库的数据没有,后面要自己添加,主要得修改很多地方,以后不更新了,剩下的其实就是部署比较重要,其他的啰里啰嗦没啥大的用处