初始flask
Flask框架介绍与环境搭建
初始flask
-
django是大而全,提供所有常用的功能 -
flask是小而精,只提供核心功能
Flask诞生于2010年, 使用python语言基于Werkzeug工具箱编写的轻量级Web开发框架
Flask本身相当于一个内核, 其他几乎所有的功能都要用到扩展(邮件:Flask-Mail, 用户认证:Flask-Login, 数据库:Flask-SQLAlchemy).
Flask的核心在于Werkzeug(路由模块), Jinja2模板引擎.
Flask的"轻"
Flask的"轻", 不代表其功能不够强大, Flask拥有丰富的扩展, 其依赖于扩展来给应用添加功能, 众多的插件提供了数据库集成,
表单验证, 上传处理,各种各样的开放认证技术等, Flask的这些特性使得它在web开发方面变得非常流行
注意: 如果构建大型项目, 使用很多扩展, Flask也会变的跟Django一样的重.
Flask框架介绍与环境搭建
为了防止 django和 flask环境相互冲突,可以使用 虚拟环境分割开
pip install virtualenv virtualenvwrapper-win # 安装虚拟环境基本的依赖包
mkvirtualenv flask # 创建一个叫 flask的虚拟环境
workon flask # 进入虚拟环境flask
rmvirtualenv flask # 删除名叫 flask的虚拟环境
deactivate # 退出当前虚拟环境
pip freeze > requirements.txt #生成依赖清单
pip install -r requirements.txt # 自动安装依赖
基本流程
配置项可以参考 官方 文档'
- 创建
flaskAPP - 定义视图函数
- 对视图函数配置路由
- 使用装饰器,配置路由
- 调用app的方法
add_url_rule对视图函数配置路由
- 直接运行APP
from flask import Flask
# __name__ 当前 文件的名字
# __file__ 当前 文件的路径
# 1. 创建flask的app
app = Flask(__name__)
# 2.1 创建视图函数,利用装饰器可以配置路由
@app.route('/')
def hello():
return "hello Flask"
# 2.2.1 创建视图函数
def two():
return 'two page'
# 2.2.2 利用app的方法对视图函数添加路由
app.add_url_rule('/two', view_func=two)
if __name__ == '__main__':
# 3. 运行APP
app.run()
项目配置
配置文件
通过专门的配置文件,读取配置项,适用于配置项较多
配置文件
通过专门的配置文件,读取配置项,适用于配置项较多
settings.py
class Config(object):
DEBUG = True
主模块
import os
from flask import Flask
from settings import Config
app = Flask(__name__)
# app.config.from_object('settings.Config')
app.config.from_object(Config)
@app.route('/')
def hello():
return "hello Flask"
if __name__ == '__main__':
app.run()
工厂模式
如果在一个函数中 创建对象,那么就可以创建多个实例。
那么这样做有什么用呢?
- 用于测试。可以针对不同的情况使用不同的配置来测试应用。
- 用于多实例,如果你需要运行同一个应用的不同版本的话。当然你可以在服务器上 使用不同配置运行多个相同应用,但是如果使用应用工厂,那么你可以只使用一个 应用进程而得到多个应用实例,这样更容易操控。
app/settings.py
class Config(object):
# 配置项在flask文档中已经规定好
DEBUG = True
app/__init__.py
from flask import Flask
from .settings import Config
def create_app():
# 1. 创建app对象
app = Flask(__name__)
# 2. 导入配置类
app.config.from_object(Config)
# 3. 返回 flask对象
return app
主模块
main.py
# 1. 导入工厂函数
from app import create_app
# 2. 生成APP
app = create_app()
@app.route('/')
def hello():
return "hello Flask"
if __name__ == '__main__':
# 3. 启动flask服务
app.run(host='0.0.0.0', port=7000, debug=True)
项目构造
python包
flask项目,一切功能围绕 核心app 来完成, 这个包就用来构造 核心APP
app/settings.py: 项目的配置文件
class Config(object):
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@localhost:3306/flask'
# mysql://用户名:密码@IP地址:端口号/数据库名
SQLALCHEMY_TRACK_MODIFICATIONS = False
app/extensions.py: 项目所使用的第三方扩展插件
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_cors import CORS
# 环境中,使用 mysqlclient 链接mysql,就可以正常使用
# 如果使用的是pymysql链接 mysql, 就需要加一些配置项
# import pymysql
# pymysql.install_as_MySQLdb()
db = SQLAlchemy()
migrate = Migrate()
cors = CORS()
def config_extensions(app):
db.init_app(app)
migrate.init_app(app, db=db)
cors.init_app(app)
app/__init__.py: 定义工厂函数,生成核心flask APP
from flask import Flask
from .settings import Config
from .extensions import config_extensions
def create_app():
# 1. 创建APP
app = Flask(__name__)
# 2. 导入配置参数
app.config.from_object(Config)
# 3. 导入 第三方的插件
config_extensions(app)
# 4. 返回APP
return app
项目的管理文件
在项目中,创建
manage.py
manage.py
from flask_script import Manager, Server
from flask_migrate import MigrateCommand
from app import create_app
# 1. 利用工厂函数生成app
app = create_app()
# 2. 创建管理对象,管理项目
manage = Manager(app)
# 3. 构建命令
manage.add_command('runserver', Server(host='0.0.0.0', port=7000))
manage.add_command('db', MigrateCommand)
if __name__ == '__main__':
# 利用管理器启动服务
manage.run()
命令
在项目的终端可以使用如下命令,操作项目
python manage.py runserver # 启动flask 服务
python manage.py db init # 只有第一次迁移时,才会执行 该命令, 执行完,会生成迁移文件
python manage.py db migrate # 生成迁移文件,出路第一次之外,任何修改模型类,都需要 执行该命令, 生成迁移文件
python manage.py db upgrade # 根据迁移文件,生成表

浙公网安备 33010602011771号