1.Flask介绍
Flask诞生于2010年, 使用python语言基于Werkzeug工具箱编写的轻量级Web开发框架
Flask本身相当于一个内核, 其他几乎所有的功能都要用到扩展(邮件:Flask-Mail, 用户认证:Flask-Login, 数据库:Flask-SQLAlchemy).
Flask的核心在于Werkzeug(路由模块), Jinja2模板引擎.
# Flask的"轻"
Flask的"轻", 不代表其功能不够强大, Flask拥有丰富的扩展, 其依赖于扩展来给应用添加功能, 众多的插件提供了数据库集成, 表单验证, 上传处理,各种各样的开放认证技术等, Flask的这些特性使得它在web开发方面变得非常流行
# 注意: 如果构建大型项目, 使用很多扩展, Flask也会变的跟Django一样的重.
2.Flask框架环境搭建
创建一个空的文件夹,使用pycharm打开,创建虚拟环境及配置虚拟环境
Flask==1.1.4
Flask-Caching==1.10.1
Flask-Cors==3.0.10
Flask-Migrate==2.7.0 # 迁移
Flask-MySQLdb==0.2.0
Flask-RESTful==0.3.9
Flask-Script==2.0.6 # 用来创建命令窗口
Flask-SQLAlchemy==2.5.1
MarkupSafe==2.0.1
PyJWT==2.3.0
PyMySQL==1.0.2
qiniu==7.6.0
redis==4.2.2
SQLAlchemy==1.4.27
flask安装 pip install flask==1.1.4
flask项目创建app.py
导包:from flask import Flask
安装依赖:pip install markupsafe==2.0.1
初始的flask基本用法
from flask import Flask # 从flask包里面导入Flask核心类
app = Flask(__name__) # 实例化flask核心对象
@app.route('/h') # 使用app提供的route装饰器 对函数进行装饰 即可成为视图函数
def hello():
return 'hello flask'
if __name__ == '__main__': # 当python解释器直接运行此文件的时候,里面的代码会执行
app.run()
配置Flask程序入口
3.Flask配置
Flask项目配置文件加载方式:
1.从配置对象中加载
2.从配置文件中加载
3.从环境变量中加载
1.从配置对象中加载
config文件 >> settings.py
# 从对象中导入配置
class Config():
NAME = 'zhangsan' # 类属性 配置项 必须是全大写字母下划线格式
# app.py中挂载写法
# app.config.from_object(Config) # 从对象中导入配置
2.从配置文件中加载
config文件 >> my_settings.py
# 导入配置文件
AGE = 18
SEX = '女'
# app.py中挂载写法
# app.config.from_pyfile('./config/my_settings.py') # 导入配置文件
3.从环境变量中加载
项目以外创建 **.py文件 用pycharm打开 写入测试数据
# 来自本地创建的py文件
PASSWORD = '123456'
# app.py中挂载写法
# app.config.from_envvar('pwd') # 从本地文件导入 (环境变量的名字来获取)
优化后: 从对象中导入配置
1.从配置对象中加载
config文件 >> settings.py
# 从对象中导入配置
class Config():
NAME = 'zhangsan' # 类属性 配置项 必须是全大写字母下划线格式
2.项目根目录创建 create_app.py
from flask import Flask
def create_app(config):
flask_app = Flask(__name__)
flask_app.config.from_object(config) # 1.从对象中导入配置
return flask_app
3.在 app.py中使用
from config.settings import Config # 导入自定义配置项
from flask import url_for, request, render_template, redirect, jsonify, make_response
from create_app import create_app
app = create_app(Config)
# 使用app提供的route装饰 对函数进行装饰,即可成为视图函数
@app.route('/h4895616119815', methods=['GET', 'POST'], endpoint='he')
def hello():
print(app.config)
# print(app.config.get('NAME')) # zhangsan
return 'hello flask 11'
@app.route('/hello2')
def hello2():
url = url_for('he')
print(url) # h4895616119815
return 'hello2'
工厂模式
根目录 >> 工厂.py
class Animal: # 抽象类
def do_say(self): # 抽象方法
pass
class Dog(Animal):
def do_say(self):
print('wangwang')
class Cat(Animal):
def do_say(self):
print('miaomiao')
class Forset():
def make_animal(self, animal_type):
eval(animal_type)().do_say()
if __name__ == '__main__':
animal = input('请输入Dog 或者 Cat:\n')
Forset().make_animal(animal)
# 工厂方法的特点 传入不同的参数,返回不同的对象