Flask环境github及项目部署(十三)
(1) github项目搭建
1 连接GitHub
hostnamectl set-hostname flask-dev # 设置 hostname,一般是主机名可以不更改
ssh-keygen # 生成SSH公钥,一直enter代表不设置密码
cd .ssh/ #存放秘钥文件,id_rsa是私钥文件,id_rsa.pub是公钥文件
vim id_rsa.pub #编辑秘钥,全部复制公钥添加到 账户settings >> SSH-keys >> add SSHkeys
2 配置git
git config --global user.email "邮箱" #设置用户名与邮箱,作为标识
git config --global user.name "账户名"
vim ~/.gitconfig #添加配置信息
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
editor = vim
3 配置虚拟环境
pip3 install virtualenv #安装virtualenv
virtualenv flaskenv #创建flaskenv虚拟环境
source env/bin/activate #激活虚拟环境
4 安装flask
pip3 install flask #安装flask
pip freeze > requirements.txt #在requirements.txt生成当前环境下所需要安装的python软件包列表
pip install -r requirements.txt #生成 requirements.txt 文件,更方便我们去安装需要的包
deactivate #退出当前的虚拟环境
5 创建github项目
# 让 Git 忽略对整个 env 目录和所有 *.pyc 文件的处理,让 Git 仅处理自己的代码文件
vim .gitignore
env/
*.pyc
mkdir gitblog #创建项目名
cd gitblog
# 创建 README 文件
echo "# welcome to why blog! " >> README.md
# 初始化 git 仓库
git init
# 将刚创建的文件都加入 git 缓冲区
git add .
# 提交改动文件到 git 仓库
git commit -m "first commit"
# 将项目发布到 github
git remote add origin https://github.com/用户名/blog.git
git push -u origin master
(2) 项目简单流程
1 项目配置文件config.py/settings.py
#配置所有环境的基类
class Config:
SECRET_KEY = 'JAGAFAjjfdsfdasdas'
SQLALCHEMY_TRACK_MODIFITIONS = False
#测试
class TestingConfig(Config):
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:xxx@127.0.0.1:3306/xxxblog'
pass
#开发
class DevelopmentConfig(Config):
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:xxx@127.0.0.1:3306/xxxblog'
DEBUG = True
#生产
class ProductionConfig(Config):
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:xxx@127.0.0.1:3306/xxxblog'
pass
sqlalchemy通过特殊的URI字符串创建数据库的连接
# database_type+driver://user:password@sql_server_ip:port/database_name
2 创建主启动文件manage.py
该文件是 Flask 应用的核心,也是程序的入口
from flask import Flask
from config import DevelopmentConfig
from flask_script import Manager
app = Flask(__name__)
manager = Manager(app)
# 使用 config.from_object() 而不使用 app.config['DEBUG'] 是因为这样可以加载 class DevConfig 的配置变量集合,而不需要一项一项的添加和修改。
app.config.from_object(DevConfig)
# 指定 URL='/' 的路由规则
@app.route('/')
def index():
return '<h1>index</h1>'
if __name__ == '__main__':
manager.run()
#注意 : 通过 manager.py 来执行命令行是十分有必要的,因为一些 Flask 的扩展只有在 Flask app object 被创建之后才会被初始化,所以非常依赖于应用上下文的环境,在没有 Flask app object 时,直接运行默认的 Python CLI 会导致这些 Flask 扩展返回错误。
3 运行开发服务器
python manage.py runserver -d -r
python3 当前启动文件名.py runserver 可选参数
#可选参数如下:
-h 主机名
-p 端口号
--threaded 开启多线程
-d 开启调试模式
-r 代码修改后重新加载
4 Models与SQLAlchemy
- 在 Web 应用程序开发中引入了 Models 为了 —— 将关系型数据转化为一个对象类型
- SQLAlchemy 是一个 Python 包,其最底层包装了对数据库进入操作的统一接口,然后在最上层提供了对象关系映射(ORM)的实现。
- SQLAlchemy-ORM 可以把大量的不同类型的数据库中的数据,转换成 Python 对象的集合。即SQLAlchemy-ORM 可以将对这些数据对象的操作转化为对数据库的操作。
- Flask 为我们提供了 Flask SQLAlchemy,其实就是在 SQLAlchemy 上提供了一层包装,让 SQLAlchemy 可以结合 Flask 的一些特性来使用。