1.企业级项目类型
商城
B2C 直销商城 商家与会员直接交易 ( Business To Customer ) # 京东
B2B 批发商城 商家与商家直接交易 # 1688
B2B2C 购物平台 商家和会员在另一个商家提供的平台上面进行交易 # 淘宝、拼多多
C2B 定制商城 会员向商家发起定制商品的需求,商家去完成。
O2O 线上线下交易平台 # 叮咚买菜
C2C 二手交易平台 # 转转,咸鱼
门户网站[企业站和门户站] (php居多)
社交网络:
-app, 脉脉,
资讯论坛
-今日头条
内部系统 (python主要)
-OA、CRM:客户关系管理,ERP:python框架(odoo) rbca权限控制
-自动化运维
-自动化测试平台...
个人博客
内容收费站
-思否
-掘金
-简书
2.企业项目开发流程
# 原型图
设计工具:墨刀,蓝湖
# ui切图
python后端工程师 涉及到的项目开发部分:
技术选型,架构设计,数据库设计,分任务开发(自己)、联调(联合调试)
# 项目管理工具:jira,禅道(php开源的)
# 项目开发模式
-瀑布开发模式
全部功能开发完后,再集中联调,最后整个项目一起上线
-敏捷开发
功能模块化划分,部分功能开发完,就马上联调,上线展示
# 面试:
# 1.你说说项目开发流程?
每天开发的需求,就根据公司内部的项目管理平台 jira或禅道(php开源的)上写的,
有不懂的或没写明白的需求,就问下我的领导,然后就开发,完了就提交到git,
测试人员就测试代码,完了有问题就在改一改,没有就写完了这个开发需求。
# 2.一个(spring、功能模块、独立项目)周期多久?
一个周
3.需求分析
1 首页功能
-轮播图
2 用户功能
-多方式登录
-手机验证码注册/登录
-发送验证码接口
3 课程功能
-查询所有课程
-过滤功能
4 课程详情
-详情展示
-视频托管和播放
5 购买功能
-支付宝支付
6 搜索功能
4.pip换源
# pip install django 国外地址,速度慢
# pip install django -i http://pypi.douban.com/simple/
# 永久配置安装源
统一修改,以后都走豆瓣源
-1 去'C:\Users\oldboy\AppData\Roaming'路径,
或在地址栏输入%APPDATA%,敲回车
-2 新建 pip 文件夹并在文件夹
-3 新增 pip.ini 配置文件内容
-4 写入
[global]
index-url = https://pypi.douban.com/simple/
[install]
use-mirrors =true
mirrors =http://pypi.douban.com/simple/
trusted-host =pypi.douban.com
# 补充
-可能自己写了模块(包),想传到pypi上,给别人用
自己百度
-https://pypi.python.org/simple
# pycharm中
解释器--管理仓库--添加源地址
5.虚拟环境搭建
# 作用
1、使不同应用开发环境相互独立
2、环境升级不影响其他应用,也不会影响全局的python环境
3、防止出现包管理混乱及包版本冲突
# 直接使用pycharm创建虚拟环境
# 使用命令创建虚拟环境 (win系统)
5.1使用命令创建虚拟环境 (win系统)
-1 安装两个命令
pip3 install virtualenv
pip3 install virtualenvwrapper-win # win系统才装
pip3 install virtualenvwrapper # mac和linux
-2 配置虚拟环境管理器工作目录
-去环境变量中加:WORKON_HOME: D:\Virtualenvs
-同步配置信息:python安装路径的scripts文件下执行virtualenvwrapper.bat
-3 去D盘新建一个文件夹Virtualenvs
-4 命令操作(cmd中)
# 1、创建虚拟环境
1.1 选取默认Python环境创建虚拟环境:
mkvirtualenv 虚拟环境名称
1.2 基于某Python环境创建虚拟环境:
mkvirtualenv -p python2.7 虚拟环境名称
mkvirtualenv -p python3.6 虚拟环境名称
# 创建并进入:以后安装模块就安装在虚拟环境里了
# 2、查看已有的虚拟环境
workon
# 3、使用某个虚拟环境
workon 虚拟环境名称
# 4、退出当前虚拟环境
deactivate
# 5、删除虚拟环境(删除当前虚拟环境要先退出)
# 去相应的文件夹下删除文件夹即可
rmvirtualenv 虚拟环境名称
# 6、进入|退出 该虚拟环境的Python环境
python | exit()
# 7、为虚拟环境安装模块
pip或pip3 install 模块名
-5 在pycharm中使用
不要在pycharm中选择虚拟环境了,选择真实环境的 虚拟环境的解释器
5.2使用命令创建虚拟环境 (mac和linux)
6.luffy后台配置
# 创建luffy虚拟环境,安装django
mkvirtualenv -p python3 luffy
pip install django==2.2.2
# 使用pycharm创建项目
选择luffy虚拟环境的解释器
# 重构项目目录
luffy_api # 项目名字
-luffy_api # 小路飞
-apps # 所有app
-user # user应用
-settings # 配置文件存放路径 (一般是两套配置文件:开发版和上线版)
-dev.py # 开发版
-pro.py # 上线版
-utils # 工具方法 文件夹
-libs # 第三方库 文件夹
-urls.py # 根路径
-wsgi.py # 上线使用 (开发阶段使用 wsgiref,上线使用uwsgi)
-manage.py # 开发阶段项目入口 (开发阶段使用 wsgiref)
-logs # 项目运行时/开发时日志目录 - 包
-scripts # 项目开发时测试脚本文件
# 创建应用到apps文件中 (startapp在哪执行,就把app创建在哪)
# 1.来到apps路径下
cd luffy_api
cd apps
# 2.在apps下创建应用
python ../../manage.py startapp user
# 注册应用
1.在配置文件中 写应用的调整后的路径
INSTALLED_APPS = [
'luffy_api.apps.user',
]
2.或直接写app名字
# 在配置文件中
# 2.1 先把apps路径和小路飞(就是当前的BASE_DIR),加入到环境变量 (注:在注册应用的代码之前添加)
import sys
sys.path.append(BASE_DIR)
sys.path.append(os.path.join(BASE_DIR,'apps'))
# 2.2 再注册应用,写入应用名
INSTALLED_APPS = [
'user',
]
# 项目运行,配置路径得正确--》修改配置文件路径
# 1.命令行 启动项目(python manage.py runserver)
在manage.py中修改
# 第二个参数:修改为正确的配置文件 (luffy_api.settings.dev)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffy_api.settings.dev')
# 2.pycharm点击启动项目
在解释器配置中修改
环境-->环境变量:
# 第二个参数:修改为正确的配置文件 (luffy_api.settings.dev)
PYTHONUNBUFFERED=1;DJANGO_SETTINGS_MODULE=luffy_api.settings.dev
# 3.项目上线,走的不是manage.py,而是wsgi.py
在wsgi.py中修改
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffy_api.settings.pro')
# 模块导入时,以最短路径导入,防止模块循环导入的问题
7.luffy数据库搭建
# 1.在配置文件中数据库配置
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'luffy', # 数据库名字
'HOST': '127.0.0.1', # 数据库的地址
'PORT': 3306,
'USER': 'luffynew', # luffy用户,数据的用户
# 一般:一个项目,一个库,一个用户
'PASSWORD': 'Luffy123?' # luffy用户密码
}
# 2.创建luffy库
mysql -h127.0.0.1 -P3306 -uroot -p # 连接数据库
create database luffy default charset=utf8; # 创建数据库
# 3.查看用户
select user,host,password from mysql.user;
# 5.7往后的版本
select user,host,authentication_string from mysql.user;
# 4.创建并授权用户 (用管理员账户创建)
只能操作luffy数据库的账户
账号:luffynew
密码:Luffy123?
# 设置权限账号密码
授权账号命令:grant 权限(create, update) on 库.表 to '账号'@'host' identified by '密码'
# 1.配置任意ip都可以连入数据库的账户 ( '%' 表示所有ip都可访问)
grant all privileges on luffy.* to 'luffynew'@'%' identified by 'Luffy123?';
# 2.由于数据库版本的问题,可能本地还连接不上,就给本地用户单独配置
grant all privileges on luffy.* to 'luffynew'@'localhost' identified by 'Luffy123?';
# 3.刷新一下权限
flush privileges;
# 5.django要操作mysql,需要使用pymysql
django操作mysql,底层用的mysqldb模块,在python2可以用,3.x不维护了
1.基于mysqldb做了pymysql 既支持python2,又支持python3,django2.0.7以后就不支持pymysql,需要改源码
1.1 在应用的 __init__下:
import pymysql
pymsql.install_as_MySQLdb() # 猴子补丁动态替换
1.2 mysql.py 中 由 decode 改为 encode
2.基于mysqldb做了mysqlclient 既支持python2,又支持python3,无缝支持django,这个模块可能装不上
pip install mysqlclient
失败:就先下载whl包,通过whl包来安装
pip install mysqlclient-1.4.6-cp36-cp36m-win_amd64.whl
安装mysqlclient失败的解决方法
8.user模块User表
# 1.新建app-user中,去models中写
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
mobile = models.CharField(max_length=11, unique=True) # 扩写了手机号,唯一
icon = models.ImageField(upload_to='icon', default='icon/default.png') # 需要安装pillow模块
class Meta:
db_table = 'luffy_user' # 修改表名
verbose_name = '用户表'
verbose_name_plural = verbose_name # 在admin中显示表名为用户表
# 2.配置文件中配置
AUTH_USER_MODEL='user.user' # app名字.表名
MEDIA_URL='/media/'
MEDIA_ROOT=os.path.join(BASE_DIR,'media') # 现在的BASEDIR是luffyapi下的luffyapi
# 3.安装pillow模块
# 4.迁移(两条命令)
# 注意:
扩写auth的user表,一定要在修改完用户表后再迁移
如果你先迁移了
1 删库(先备份,再删除生成的所有表)
2 删除迁移文件(app迁移文件)
3 删除admin和auth的迁移文件
4 再重新做