A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 专注的一批 中级黑马   /  2020-7-9 16:22  /  2176 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

python之Django的技术分析
1. 简介
B2C(Business-to-Customer), 企业对个人的一种商业模式,简称"商对客". 商对客是电子商务的一种模式,这种电子商务一般以网络零售业为主,主要借助于互联网开展在线销售活动。 B2C即企业通过互联网为消费者提供一个新型的购物环境——网上商店,消费者通过网络在网上购物、网上支付等消费行为。

为消费者提供一个新型的购物环境:
从0开始,立项、构建、开发到部署, 搭建一个天天生鲜商场



2.  技术栈
- 语言:Python3.* (Django)
- 数据库: MySql、 redis
- 任务队列(异步处理): celery(django-celery)
- 分布式文件存储: FastDFS
- 搜索引擎(商品检索): haystack(django-haystack)、whoosh、二次开发
- web服务器配置: Nginx+ uwsgi
- 开发环境: PyCharm、Linux、vim


3. 技术架构
3.1  开发架构
采用BS结构, 即Browser/Server(浏览器/服务器)结构,构建一个web的网站商城系统, 其架构逻辑:




3.2  部署架构
Nginx+uwsgi

在java网络编程中,主要分为数据访问层,表示层,业务逻辑层,以及实体层。这里就简单介绍一下各个分层之间的关系。各部分的关系图如下:
这里写图片描述

二、python的Django框架
Python下有许多款不同的 Web 框架。Django是一个开放源代码的Web应用框架,由Python写成。Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。

三、MVC模型是什么?
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

四、创建Django项目

注意:目前Django 1.6.x以上版本已经完全兼容Python 3.x。
python的安装这里就不详细介绍了。本博客只介绍Django框架的应用。本博主介绍的是Window系统下的安装。

1、安装Django框架
1.1手动安装
下载 Django 压缩包,解压并和Python安装目录放在同一个根目录,进入 Django 目录,执行python setup.py install,然后开始安装,Django将要被安装到Python的Lib下site-packages。这是手动安装。
1.2自动安装(pip安装)
查看python里面是否有”pip”
找到你的python的安装路径Python36-32\Scripts下是否有红色方框里的文件:
这里写图片描述
1.2.1如果没有安装pip
本博主在安装好python之后,在文件夹的scripts文件夹下没有任何关于pip的文件所以首先配置智汇返佣https://www.kaifx.cn/broker/thinkmarkets.html环境变量,之后安装pipDjango 这个Web框架学习过的人无不知晓它的强大.
Django是一个开放源代码的Web应用框架,由Python写成,采用了MT'V的框架模式.即Model,View,Template组成.许多成功的网站和APP都基于Django.说到底,其实Django内部就是对 Socket 连接的强大封装.
Django.jpg
二:Django配置和创建
创建
在这里我们不用命令,用PyCharm简单的创建一个Django程序
1 . 创建Django
打开PyCharm - > File ->NewProject 进行创建
创建项目.png
运行Django程序 浏览器访问127.0.0.1:8000/ 表示连接成功了!



4. 主体模块
主要分为四个大模块:
* 用户模块、
* 商品相关模块、
* 购物车相关模块、
* 订单相关模块、



5.  数据库表






* SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。
例如,iphone4就是一个SPU,N97也是一个SPU,这个与商家无关,与颜色、款式、套餐也无关。
* SKU即库存进出计量的单位, 可以是以件、盒、托盘等为单位,在服装、鞋类商品中使用最多最普遍。
例如纺织品中一个SKU通常表示:规格、颜色、款式。


6. 功能模块展示
[点击查看--多图预警](Readme/show.md)


7. 功能与性能优化
7.1  用户注册发激活邮件时,可能发送邮件所需的时间较长,客户端会需要等待,用户体验不好。
> 把耗时的任务放到后台异步执行,此处使用celery任务队列, 其中使用redis作中间件。
7.2 redis存储用户历史浏览记录, 采用list数据结构: History_用户id: [skuid1,skuid2,skuid3]
7.3 使用redis存储用户购物车商品信息,采用hash数据结构: cart_userid: {'sku_id1': num, 'sku_id2': num}
7.4 采用分布式文件系统, 把商品图片等信息存储在FastDFS系统中, Nginx+FastDFS配合, 减少服务器的压力。
7.5 页面静态化: 首页、商品列表页、商品详情页等用户共同的页面, 把页面静态化,以减少对数据库的操作。当后台数据更改时自动重新生成静态页。
7.6 页面数据缓存,把页面使用的数据存放在缓存中,当再次使用这些数据时,先从缓存中获取,如获取不到,再去查询数据库,减少数据库的查询次数。
7.7 订单并发


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马