天天⽣鲜项⽬总结
跟着视频做的天天⽣鲜web项⽬告⼀段落了,做个总结
技术栈:python,django,mysql,redis
1、天天项⽬是⽣鲜类产品 B2C PC端⽹站,包括四⼤模块
2、功能模块:⽤户模块,商品模块,购物车模块,订单模块
3、⽤户模块:注册,激活,登录,退出,个⼈中⼼,地址页⾯
4、商品模块:⾸页,详情页⾯,列表页⾯,搜索(hasystack+whoosh)
jquery在项目里是干啥的5、购物车模块:增加,修改,删除,查询
6、订单模块:确认订单页,订单创建(下单),请求⽀付,查询⽀付结果,评论
7、django默认的⽤户认证模型类AbstractUser:
django默认是有⽤户模型类的,当需要⾃⼰定义⽤户模型类时,让这个模型类去继承django⾃带的Abstr
actUser类,就可以使⽤django ⽤户认证系统的所有⽅法,如常⽤的create_User,authenticate,login,logout,is_authenticated,login_required装饰器(没登陆的话记得改为跳转到登陆界⾯)。最后⼀定要记住去项⽬的settings⽂件中把django的认证系统使⽤的模型类AUTH_USER_MODEL改
为"user.User"。
开发的时候普遍的原则:当前端访问你的某⼀个地址之后,如果前端携带了数据,你⾸先应该对这些数据进⾏接收,接收完后进⾏校验(防⽌⾮法请求),紧接着核⼼业务处理,处理完后给他返回应答。
8、itsdangerous(使⽤dumps⽅法对user_id进⾏加密)⽣成签名的token,并把⽤户的token加到激活链接传给激活视图使⽤loads解密
9、发邮件 (django提供邮件⽀持,send_mail)但是你得⽤celery去完成
10、celery异步队列:把代码中⼀些耗时的操作交给异步队列做,代码正常往下执⾏发出者发出任务,broker⽣成任务队列,worker监听任务队列。启动worker:celery -A celery_tasks.tasks worker -l info
11、页⾯静态化 (celery,nginx)
把原本动态的页⾯处理结果保存成html⽂件,让⽤户直接访问这个随管理员修改动态⽣成出来的静态html页⾯,因为电商⽹站的商品修改更频繁,所以后台管理类是商品模块的admin⽂件。
12、数据缓存cache(保存的位置,有效期,与数据库的⼀致性问题):将处理的结果先临时保存在redis,下次使⽤的时候可以先直接使⽤,如果没有这个备份数据,再去查询redis。
**页⾯静态化和数据缓存本质就是减少对数据库的查询次数,⼀定程度防⽌⽹站DDOS恶意攻击,即⽹站性能的优化。
**
13、django⼆次开发对接fastdfs:修改django默认的⽂件存储系统,更改django上传⽂件⾏为(⾃定义⽂件存储类),要配置你的存储类为这个类
14、商品搜索(whoosh 索引 分词:替换为jieba)
15、购物车 redis 哈希存储 历史记录 redis list存储:
redis保存⽤户的购物车记录:点击加⼊购物车添加,访问购物车页⾯时从redis中获取给前端显⽰,⽤hash存储每⼀个⽤户的购物车记录,统计hash中的元素数量⽤hlen
⽤户的历史浏览记录使⽤redis存储,使⽤list类型,每个⽤户的历史浏览记录⽤⼀个list数据来存储,并且在左侧插⼊,保持最新在⽤户访问某个商品详情页时添加。
16、ajax都是放在jquery中向后端发起请求。不会放在原⽣js中
17、事务
18、⾼并发的库存问题(悲观锁、乐观锁):
防⽌卖出的商品多于库存,冲突少⽤乐观,冲突多⽤悲观。
19、商品⾸页,详情页,列表页这三个页⾯有⼀个共同的特点:都不涉及到数据的修改,都是从数据库⾥⾯把信息查出来,在页⾯做⼀个遍历的显⽰,动态给遍历出来的对象增加属性来存储查询出来的数据
20、前后端交互⼀定要有这些意识:
确定前端是否要给后端传递数据,传递什么数据,什么格式
确定前端访问的⽅式:表单(post还是get),ajax(post还是get))
确定后端返回给前端什么数据,什么格式
jquery⽐较重要的就是ajax请求,涉及到和后端交互的那⼀块
21、订单⽀付:对接⽀付宝:
⽤户在⽤户订单中⼼点击去付款,前端ajax post⽅式把订单id传到后端,后端处理,调⽤⽀付宝⽀付接⼝,⽀付宝平台返回⽀付宝页⾯地址,后端把这个url返回给前端,前端引导⽤户到这个url的页⾯,⽤户登录付款,
最后还要加上⼀个⽤户查询订单⽀付结果的业务视图,还是要调⽤⽀付宝的查询接⼝,⽀付宝平台返回⽀付结果,再给⽤户显⽰出来。
22、项⽬部署:(uwsgi作为服务器 nginx 负载均衡并提供静态⽂件)
部署不是开发⼈员做的事,有专门的运维⼈员。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。