路飞项目篇:项目需求、pip永久换源、虚拟环境搭建、后台创建目录调整
- 企业项目类型
- 企业项目开发流程
- 路飞项目需求
- pip换源
- 虚拟环境搭建
- 路费后台创建目录调整
1 企业项目类型
# 软件类型
-web类型
商城
1.1 B2C 直销商城 商家与会员直接交易 (京东,大润发app,盒马商城 )
1.2 B2B 批发商城 商家与商家直接交易(1688,)
1.3 B2B2C 购物平台 商家和会员在另一个商家提供的平台上面进行交易(淘宝)
1.4 C2B 定制商城 会员向商家发起定制商品的需求,商家去完成()
1.5 O2O 线上线下交易平台 (叮咚买菜。。。)
1.6 C2C 二手交易平台(咸鱼,转转)
门户网站[企业站和门户站]
社交网络
-爱聊,陌陌,探探
资讯论坛
-
内部系统-python写的非常多
-oa,人员管理,请假审批,流程审批
-crm:客户关系管理
-erp:财务,工资。。。 odoo
-运维自动化
-自动化测试
-银行内部
-医院内部
-政府内部
个人博客
内容收费站
-其他类型
-小工具:图形化界面--GUI编程
-Tkinter
-pyqt: qt平台用py代码写
-小脚本
-批量处理
-监控类的
2 企业项目开发流程
# 项目开发流程
-1 公司立项
-来源:产品经理 对市场的眼光,客户
-2 需求分析
-互联网产品:产品经理
-客户
-3 设计产品原型---》产品经理
-画原型图---》墨刀
-4 分叉--》前后端分开操作
-后端开始
-设计程序的架构,技术选型(组里开会)
-数据库设计
-分任务开发:项目管理软件:禅道
-分到你身上,写代码---》自测 ---》提交到git
-专门测试集中测试;前端联调
-测出问题---》测试在管理软件提bug---》到你身上
-前端开始
-ui设计
-前端开发
-联调
-测试
-5 集中测试---》项目上线 ---》运维
-6 功能迭代,增加功能,修改bug
3 路飞项目需求
# 路飞项目需求
-首页轮播图
-登录
-手机号+验证码
-用户名+密码
-注册
-手机号+验证码+密码注册方式
-实战课列表
-排序
-过滤
-分页
-课程详情
-课程内容展示
-章节,课时
-老师展示
-视频播放
-购买课程
-支付宝支付
-付款成功页面
-生成订单,修改订单状态
-搜索课程
-模糊搜索
-上线
-阿里云服务器
-mysql
-redis
-niginx
-uwsgi
-django
-前端
![e9fd70b6efa8e27d6c2912b64630dd0](.\luffy-day01.assets\e9fd70b6efa8e27d6c2912b64630dd0.jpg)
![77c1edfba32dd1146b37be04abe5901](.\luffy-day01.assets\77c1edfba32dd1146b37be04abe5901.jpg)
![c58bd02eae3ce1c9076de3cce8b6536](.\luffy-day01.assets\c58bd02eae3ce1c9076de3cce8b6536.jpg)
![7cd3fc644cd583060cc5d2987fbab36](.\luffy-day01.assets\7cd3fc644cd583060cc5d2987fbab36.jpg)
![381f340dc68895146328d71dfc7def2](.\luffy-day01.assets\381f340dc68895146328d71dfc7def2.jpg)
![da3905e0037a460c1f6252fa2574ad5](.\luffy-day01.assets\da3905e0037a460c1f6252fa2574ad5.png)
![0e2c2f33cfb4190712a9765977c32fc](.\luffy-day01.assets\0e2c2f33cfb4190712a9765977c32fc.jpg)
4 pip换源
# 下载的第三方模块---》pypi网站上----》国外---》pip install 国外网站下载 whl,tar.gz--》速度慢--》pip install -i 国内镜像---》每次都要加-i 镜像地址
# 一劳永逸:配置一次,以后都走国内镜像
-豆瓣:少用
-清华:推荐
-阿里云
# 永久换源步骤
1、文件管理器文件路径地址栏敲:%APPDATA% 回车,快速进入 C:\Users\电脑用户\AppData\Roaming 文件夹中
2、新建 pip 文件夹并在文件夹中新建 pip.ini 配置文件
3、新增 pip.ini 配置文件内容
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
use-mirrors =true
mirrors =https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host =pypi.tuna.tsinghua.edu.cn
5 虚拟环境搭建
# 为什么会出现?
-开发一个项目使用django 1.11.11
-开发一个项目使用djagno 2.2.2
-同一个操作系统上,只能装某一个版本的第三方模块
# 虚拟环境解决
-一个项目一个环境,有自己的第三方模块,相互不影响
-有个总环境系统python环境
# virtualenv 解决方案
-pip3 install virtualenv # 虚拟环境模块
-pip3 install virtualenvwrapper-win # win上,更方便的使用virtualenv的扩展
# 使用步骤
-第一步:安装两个模块
virtualenv
virtualenvwrapper-win
-第二步:配置
# 配置环境变量:
变量名:WORKON_HOME 变量值:自定义存放虚拟环境的绝对路径
WORKON_HOME: D:\Virtualenvs
# 同步配置信息:安装了virtualenvwrapper-win,就会有
# 去向Python3的安装目录 => Scripts文件夹 => virtualenvwrapper.bat => 双击
-第三步:虚拟环境命令
# 1、创建虚拟环境到配置的WORKON_HOME路径下(或者使用管理员身份进入终端直接敲)
# 基于某Python环境创建虚拟环境:创建并进入了,以后再敲python,pip统统都用虚拟环境的
-- mkvirtualenv -p python2.7 虚拟环境名称
-- mkvirtualenv -p python3 虚拟环境名称
# 2、查看已有的虚拟环境
-- workon
# 3、使用某个虚拟环境
-- workon 虚拟环境名称
# 4、进入|退出 该虚拟环境的Python环境
-- python | exit()
# 5、为虚拟环境安装模块
-- pip或pip3 install 模块名
# 6、退出当前虚拟环境
-- deactivate
# 7、删除虚拟环境(删除当前虚拟环境要先退出)
-- rmvirtualenv 虚拟环境名称
MacOS,Linux使用
安装
# 建议使用pip3安装到python3环境下
pip3 install -i https://pypi.douban.com/simple virtualenv
pip3 install -i https://pypi.douban.com/simple virtualenvwrapper
工作文件
# 先找到virtualenvwrapper的工作文件 virtualenvwrapper.sh,该文件可以刷新自定义配置,但需要找到它
# MacOS可能存在的位置 /Library/Frameworks/Python.framework/Versions/版本号文件夹/bin
# Linux可能所在的位置 /usr/local/bin | ~/.local/bin | /usr/bin
# 建议不管virtualenvwrapper.sh在哪个目录,保证在 /usr/local/bin 目录下有一份
# 如果不在 /usr/local/bin 目录,如在 ~/.local/bin 目录,则复制一份到 /usr/local/bin 目录
-- sudo cp -rf ~/.local/bin/virtualenvwrapper.sh /usr/local/bin
配置
# 在 ~/.bash_profile 完成配置,virtualenvwrapper的默认默认存放虚拟环境路径是 ~/.virtualenvs
# WORKON_HOME=自定义存放虚拟环境的绝对路径,需要自定义就解注
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
# 在终端让配置生效:
-- source ~/.bash_profile
使用
# 在终端工作的命令
# 1、创建虚拟环境到配置的WORKON_HOME路径下
# 选取默认Python环境创建虚拟环境:
-- mkvirtualenv 虚拟环境名称
# 基于某Python环境创建虚拟环境:
-- mkvirtualenv -p python2.7 虚拟环境名称
-- mkvirtualenv -p python3.6 虚拟环境名称
# 2、查看已有的虚拟环境
-- workon
# 3、使用某个虚拟环境
-- workon 虚拟环境名称
# 4、进入|退出 该虚拟环境的Python环境
-- python | exit()
# 5、为虚拟环境安装模块
-- pip或pip3 install 模块名
# 6、退出当前虚拟环境
-- deactivate
# 7、删除虚拟环境(删除当前虚拟环境要先退出)
-- rmvirtualenv 虚拟环境名称
6 luffy后台创建Django项目
环境
"""
为luffy项目创建一个虚拟环境
>: mkvirtualenv luffy
"""
"""
按照基础环境依赖
>: pip install django==2.0.7
>: pip install djangorestframework
>: pip install pymysql
"""
创建项目
"""
前提:在目标目录新建luffy文件夹
>: cd 建立的luffy文件夹
>: django-admin startproject luffyapi
开发:用pycharm打开项目,并选择提前备好的虚拟环境
"""
重构项目目录
"""
├── luffyapi
├── logs/ # 项目运行时/开发时日志目录 - 包
├── manage.py # 脚本文件
├── luffyapi/ # 项目主应用,开发时的代码保存 - 包
├── apps/ # 开发者的代码保存目录,以模块[子应用]为目录保存 - 包
├── libs/ # 第三方类库的保存目录[第三方组件、模块] - 包
├── settings/ # 配置目录 - 包
├── dev.py # 项目开发时的本地配置
└── prod.py # 项目上线时的运行配置
├── urls.py # 总路由
└── utils/ # 多个模块[子应用]的公共函数类库[自己开发的组件]
└── scripts/ # 保存项目运营时的脚本文件 - 文件夹
"""
配置开发环境
"""
1.修改 wsgi.py 与 manage.py 两个文件:
# manage.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.dev')
# wsgi.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.prod')
# manage_prod.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.prod')
2.将settings.py删除或改名,内容拷贝到settings/dev.py中
3.修改dev.py文件内容
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False
4.修改启动配置:见插图
5.在任何一个__init__.py文件中测试默认配置文件是否是dev.py文件
from django.conf import settings
print(settings)
"""
配置开发环境简述
# 创建完项目,目录调整
-在项目的luffyapi路径下创建一个apps文件夹,以后所有app都放在当前路径下
-第一个:在根路径创建app,拖进去
-第二个:直接在apps文件夹下创建app
python ../../manage.py startapp home
-把apps路径和小luffyapi加入到环境变量,以后注册app,直接写名字即可
sys.path.append(os.path.join(BASE_DIR, 'apps'))
# 把小luffyapi加入环境变量
sys.path.append(BASE_DIR)
-在小luffyapi下创建一个settings文件夹
-dev.py #开发阶段用的配置文件
-pro.py #上线阶段用的配置文件
-在manage.py 中修改配置文件启动位置
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.dev')
-项目上线,使用uwsgi运行项目需要改wsgi.py,把它的配置文件改成(目前先不管)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.pro')
-在项目根路径创建log文件夹放日志
-在小luffyapi目录下,创建libs文件夹,以后放第三方模块
-在小luffyapi目录下,创建utils文件夹,以后放公共的代码
-在项目根路径下新建scripts文件夹,以后放测试文件
补充
# 装饰器
-函数装饰器
-装饰函数的
-无参装饰器
-有参装饰器 #指的是装饰器有参,无参,不是被装饰的函数
-模板
def auth(func):
def inner(*args,**kwargs):
# 逻辑
res=func(*args,**kwargs)
# 逻辑
return res
return inner
@auth #add=auth(add)--->add=inner---->现在的add就是inner
def add(a,b):
return a+b
add(1,2)---->inner(1,2)
-类装饰器
-第一种:加在类中方法上的装饰器
-第二种:类作为装饰器
class Person:
def __init__(func):
self.func=func
def __call__(*args,**kwargs)
# 逻辑
res=self.func(*args,**kwargs)
# 逻辑
return res
@Person # add=Person(add)---->add变成了Person的对象
def add(a,b):
return a+b
add(1,2)--->person(1,2)