-
商城
主要把现实中的商务交易通过互联网平台实现的电子交易模式的网站。商城会根据不同的交易双方划分成不同的电子商务模式。根据不同的电子商务模式,有可能把商城划分成不同类型的商城,常见的电子商务模式:
B2C[企业对个人的交易,由企业提供商品,个人选购,Business-to-Consumer]: 一般常见的官网商城。
B2C也叫直销商城,或者垂直商城,也可以叫自营商城。
B2B[企业对企业的交易,由企业提供商品,另一个企业进行批发或采购,Business-to-Business],
B2B也叫批发商城,例如与:1688
C2C[个人对个人的交易,网站官网不参与交易,而是提供了一个平台给用户之间进行交易,Consumer-to-Consumer],一般常见的就是二手商品交易平台或者拍卖平台。例如淘宝,孔夫子二手书网。
B2B2C[一个商家在另一个企业平台上对个人的交易],一般叫进驻商城,购物平台。例如:天猫,京东,当当。
C2B[个人对企业的交易,由个人发起需求,企业接单完成商品],一般也叫订购(定制)商城,例如:小米,3D打印。
O2O[线上付费,线下体验的交易],常见的外卖平台,大众点评,12306。。。
注意:不同的商城,会因为不同的电子商务模式而存在不同的功能和交易流程,所以,开发商城时,一定先分析清楚当前项目属于什么样的电子商务模式。当然,因为市场,需求和时间的改变,电子商务模式也会发生变化的。一旦发生电子商务模式的变化,在企业中,往往不适合在原有网站上面改造,而是建议重构。
-
门户网站[企业站和门户站]
-
社交网络
具备社交因素的网站。能够添加好友,发送私信,划分群组。。
例如:知乎,微博,脉脉,脸书
-
资讯论坛
例如:招聘网站,今日头条,天涯,百度贴吧。。。
-
内部系统
OA[线上办公管理系统],CRM[客户关系管理系统],ERP[企业权限管理系统],要求权限比较高的,对于企业的业务进行专门定制的,很多时候开发过程中需要根据业务实现各种流程根据。
-
个人博客
一般都是文章展示,往往就是团队,组织,机构,个人展示最近动态或者技术分享,生活分享的网站。
-
内容收费站
妹子图,爱奇艺,优酷,软甲下载站,音乐下载网,音乐视听网。。。。
1.2 企业项目开发流程
1.3 立项申请阶段
立项其实就是对产品项目能不能做和怎么做,提出理论基础。大的互联网公司都有比较正规的立项流程。
通常公司内部要研发一款软硬件的产品之前,都要经过市场评估和调研分析,产生一份产品项目立项报告给公司。
产品项目立项报告一般包含以下内容:
项目概述
需求市场
需求分析和项目建设的必要性
业务分析
总体建设方案
项目风险和风险管理
可行性分析阶段
参考资料:https://blog.csdn.net/m0_37370820/article/details/81077886
2. 需求分析
2.1 登录注册
功能:用户登录、多条件登录、jwt认证、记住密码、QQ第三方登录、
用户注册、短信发送、短信冷却倒计时、腾讯防水墙验证码、Celery异步发送短信和邮件
邮箱找回重置密码、使用itsdangerous对数据进行加密解密
2.2 首页
功能:无限级别导航菜单、轮播图、退出登录、内容列表下拉刷新
采用分布式存储系统FastDFS存储网站内容图片,基于docker进行安装部署FastDFS
feed流内容推送[feed是将用户主动订阅的内容组合在一起形成内容聚合器,帮助用户持续地获取最新内容]
智能推荐原创作者、关注作者和取消关注
django集成markdown富文本编辑器
2.3 内容详情
功能:文章内容实现专题、文集等归纳类目
内容基本展示、作者信息展示、作者热门文章展示、同类专题内容推荐、
文章评论、无限级别评论回复、评论分页、评论排序、分享内容、收藏内容、评论点赞和踩
点赞内容、赞赏支持
基于redis保存我的浏览历史记录
内容购买
2.4 内容搜索页
功能:基于ElasticSearch实现中文分词,使用django-haystack配合完成内容搜索。
搜索内容结果实现分页展示
按不同条件筛选展示内容
搜索历史记录
2.5 个人中心
2.5.1 我的首页
功能:个人信息基本展示、采用timeline模式展示我的动态、展示最新评论、展示我的热门内容、展示我的文集
基于ajax实现鱼书功能[在线聊天]、
2.5.2 收藏和喜欢的的文章
2.4.3 我的钱包
功能:基于支付宝转账到个人账户接口实现余额提现、
资金流水记录
2.4.5 我的基本信息设置
功能:基本信息修改、用户地址信息功能修改、账户所有内容打包下载
2.4.6 我的粉丝
功能:关注和取消关注
3. 环境搭建
3.1 创建虚拟环境
# 如果当前系统中没有虚拟环境,则使用以下命令安装虚拟环境:
# pip3 install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple
# pip3 install virtualenvwrapper -i https://pypi.tuna.tsinghua.edu.cn/simple
# pip3 install virtualenvwrapper-win -i https://pypi.tuna.tsinghua.edu.cn/simple
mkvirtualenv renran
如果自己的开发机子中存在多个版本的python,则可以指定python解析器的版本
mkvirtualenv renran -p python3
3.2 相关命令
创建虚拟环境: mkvirtualenv 虚拟环境名称
创建虚拟环境(指定python版本): mkvirtualenv 虚拟环境名称 -p python3
查看所有虚拟环境: workon
使用虚拟环境: workon 虚拟环境名称
退出虚拟环境: deactivate
删除虚拟环境(必须先退出虚拟环境内部才能删除当前虚拟环境):
rmvirtualenv 虚拟环境名称
其他相关命令:
查看虚拟环境中安装的包: pip freeze 或者 pip list
收集当前环境中安装的包及其版本: pip freeze > requirements.txt
在部署项目的服务器中安装项目使用的模块: pip install -r requirements.txt
提示:
-
虚拟环境只会管理环境内部的模块和python解析器,对于源代码是毫无关系
-
创建虚拟环境需要联网
-
创建成功后, 会自动工作在这个虚拟环境上
-
工作在虚拟环境上, 提示符最前面会出现 “(虚拟环境名称)”
3.3 技术选型
外部依赖
-
注册支付宝的开发者账号
-
注册阿里云/腾讯云账号,如果可以购买一个服务器【www.aliyun.com】
-
注册容联云短信接口平台的账号【www.yuntongxun.com】
-
注册腾讯开发者账户,申请QQ互联开发者实名认证【http://connect.qq.com】
-
申请163或者QQ邮箱开通smtp/pop3服务【http://mail.163.com】
-
注册gitee[码云]的账号
-
如果有条件的,可以申请一个域名进行备案[ICP备案和公安部备案],如果没有的话, 可以注册natapp
公安部备案平台:http://www.beian.gov.cn/
依赖包安装
pip install django==2.2.0 -i https://pypi.douban.com/simple
pip install djangorestframework -i https://pypi.douban.com/simple
pip install PymySQL -i https://pypi.douban.com/simple
pip install Pillow -i https://pypi.douban.com/simple
pip install django-redis -i https://pypi.douban.com/simple
4. 搭建项目
4.1 创建项目
项目所在路径不要使用中文或者空格或者除了下划线的其它特殊符号
cd ~/Desktop
mkdir renran
cd renran
django-admin startproject renranapi
4.3 打开项目
在pycharm中打开项目
选择菜单file, 点选settings... 设置虚拟环境
点击右边的齿轮,选择Add
启动django项目中的manage.py
因为仅启动manage.py,所以项目不会运行,所以需要配置启动manage.py的参数。
点选“Edit Configurations”,在新窗口中的Parammeters中加上以下内容
runserver 0.0.0.0:8000
再次运行manage.py
效果:
提示:
在pycharm中如果要使用已经创建好的虚拟环境,则必须设置pycharm中的python解释器,设置为虚拟环境中的python。
4.2 调整目录
renran/
├── docs/ # 项目相关资料保存目录
├ 项目开发日志/项目开发文档.md
├── reran_pc/ # 前端项目目录
├── reranapi/ # api服务端项目目录
├── logs/ # 项目运行时/开发时日志目录
├── manage.py
├── reranapi/ # 项目主应用,开发时的代码保存
│ ├── apps/ # 开发者的代码保存目录,以模块[子应用]为目录保存
│ ├── libs/ # 第三方类库的保存目录[第三方组件、模块]
│ ├── settings/
│ ├── dev.py # 项目开发时的本地配置[不需要上传到线上或者服务器]
│ ├── prod.py # 项目上线时的运行配置
│ ├── urls.py # 总路由
│ ├── utils/ # 多个模块[子应用]的公共函数类库[自己开发的组件]
└── scripts/ # 保存项目运营时的脚本文件
在编辑中开发项目时,必须指定项目目录才能运行,例如,开发后端项目,则必须选择的目录是renranapi
4.2.1 分不同环境进行项目配置
开发者本地的环境、目录、数据库密码和线上的服务器都会不一样,所以我们的配置文件可以针对不同的系统分成多分.
-
在项目主应用下,创建一个settings的配置文件存储目录
-
根据线上线下两种情况分别创建2个配置文件 dev.py和prod.py
-
把原来项目主应用的 settings.py 配置内容复制2份到dev.py和prod.py里面
-
把原来的settings.py配置文件修改文件名,例如settings_old或者直接删除settings.py
新的配置文件目录settings:
接下来,就可以在manage.py中根据不同的开发环境导入对应的配置文件了.
4.3 创建代码版本
cd进入到自己希望存储代码的目录路径,并创建本地仓库.git【pycharm直接打开终端就是项目根目录了。无须cd了】 新创建的本地仓库.git是个空仓库
cd ~/Desktop/renran
git init # 为当前目录创建一个git仓库
ls -la # linux下列出当前目录所有目录文件,包括隐藏文件
4.3.1 配置用户名和邮箱
git config --global user.name \'moluo\'
git config --global user.email \'649641514@qq.com\'
4.4 在gitee平台创建工程
公司一般都会有自己的代码仓库,一般都是自己搭建,也有使用第三方提供代码管理平台。
常用的代码管理平台:github、gitee(码云)
如果公司自己搭建的代码管理平台,gitlab框架
1) 创建私有项目库
创建私有/公有空仓库以后的界面:
2)克隆项目到本地
注意: 我们当前项目不需要这个步骤 这个步骤是 当以后我们进入公司里面,参与人家已经在做的项目时,别人已经有仓库了,但是我们是新人加入项目中的,那么我们不需要在自己本地进行git init,直接git clone 复制别人的仓库代码
git clone 仓库地址
注意,如果当前目录下出现git仓库同名目录时,会克隆失败。
3)创建并切换分支到dev
# git branch dev # 创建本地分支dev,dev是自定义
# git checkout dev # 切换本地分支代码
git checkout -b dev # 这里是上面两句代码的简写
git branch -d dev # 删除分支
git提交
git add 代码目录 # 添加代码到上传队列
git status # 查看当前项目的版本状态
git commit -m \'添加项目代码\' # 提交代码到本地仓库, -m 表示本次提交的描述
推送到远端
git push origin dev:dev
如果推送代码,出现以下提示: git pull ....,则表示当前本地的代码和线上的代码版本不同.
1. 把线上的代码执行以下命令,拉取到本地,进行同步
git pull
2. 根据提示,移除多余的冲突的文件,也可以删除.
完成这些步骤以后,再次add,commit,push即可.
接下来,我们就把上面创建好的本地项目提交到gitee码云上面
# .表示当前目录下所有的文件或目录提交到上传队列[上传队列也叫"暂存区"] # 切换当前工作目录到项目根目录 cd ~/Desktop/renran/ git add . # 把本地上传队列的代码提交到本地仓库 git commit -m "项目初始化搭建" # 给本地的git版本控制软件设置项目的远程仓库地址 git remote add origin https://gitee.com/moluo/renran.git # 提交代码给远程仓库 git push -u origin master
扩展: 1. 通过 git status 可以查看当前项目的代码版本状态 2. 通过 git reflog 可以查看代码版本日志[简单格式] 3. 通过 git log 可以查看代码版本日志[详细格式]
最终就可以成功提交了代码版本到gitee平台。
上面虽然成功移交了代码版本,但是一些不需要的文件也被提交上去了。
所以,我们针对一些不需要的文件,可以选择从代码版本中删除,并且使用.gitignore把这些垃圾文件过滤掉。
git rm 文件 # 删除单个文件 git rm -rf 目录 # 递归删除目录 # 以下操作建议通过ubuntu的终端来完成,不要使用pycharm提供,否则删除.idea还会继续生成。 git rm -rf .idea git rm db.sqlite3 # 注意,上面的操作只是从项目的源代码中删除,但是git是不知情的,所以我们需要同步。 git add . git commit -m "删除不必要的文件或目录" git push -u origin master
使用.gitignore把一些垃圾文件过滤掉。
vim .gitignore renranapi/.idea renranapi/.idea/* renranapi/db.sqlite3
开发时我们经常会使用pycharm的提供的git管理工具来完成代码的拉取和推送。