Flask是个什么东西?
它是一个Python开发web(网页、站点)专用的一个框架。
所谓框架:就是方便我们去开发的,是一个工具。它帮助我们实现了一些开发中的基本功能。
既然是一个工具,它就不难。可以减轻我们开发中的工作量。
基于 Werkzeug工具箱
轻量级Web开发框架
内核 + 扩展
Flask两个核心组件
Werkzeug
Jinja2
Flask的强大之处在于其第三方的扩展比较多,你总能找到适合自己的扩展
Django跟Flask对待功能的区别?
Django:
不管你需不需要,它内部集成了很多功能。
CSRF\CORSheaders\分页\上传\数据库\Admin管理后台\ORM
我们在开发中,很多功能是闲置状态。
Flask:
你需要什么就安装什么
在Flask里面总能找到Django的替代品
Flask安装
1.创建空文件夹
2.pycharm打开文件夹
3.创建虚拟环境
4.激活虚拟环境
4.1 判断是否需要激活虚拟环境
4.2 激活命令
4.3 验证虚拟环境是否正确
如果django说明环境出现了问题
4.5 解决办法:重启虚拟环境
问题
问题1
解决办法:
执行命令 set-ExecutionPolicy RemoteSigned
安装flask
1.安装Flask的python库 版本:1.1.4
(venv) D:\Study\h220214_p7\www\day01> pip install MarkupSafe==2.0.1
(venv) D:\Study\h220214_p7\www\day01> pip install flask==1.1.4
(venv) D:\Study\h220214_p7\www\day01> pip install flask==1.1.4 -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 指定清华镜像源
(venv) D:\Study\h220214_p7\www\day01> pip install flask==1.1.4 -i http://pypi.douban.com/simple/ # 指定豆瓣源
# 其他的一些源
# 豆瓣(douban) http://pypi.douban.com/simple/ (推荐)
# 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
# 阿里云 http://mirrors.aliyun.com/pypi/simple/
# 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
# 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
1.在项目根目录下创建一个app.py文件
2.编写代码
# 1. 导包
from flask import Flask
# 2. 实例化 ctrl + p 查看参数提示
app = Flask("dsgasdgasdg")
# 4. 写视图函数
@app.route("/hello") # 用装饰器的方法,把视图函数和路由地址形成一一对应关系
def hello():
return "<h1>hello</h1>"
# 3. 运行
if __name__ == '__main__':
app.run()
如何设置Flask的配置项
1.注意:
2.配置项的名字必须是大写字母+下划线的形式。小写字母不生效
设计模式
代码:
app.config["DEBUG"] = True # 设置配置项
app.config.get("NAME") # 获取配置项
app.config.get("AGE", 18) # 获取配置项并设置默认值
# 方法1:从对象中加载配置文件
# 定义配置类 config.py
class Config:
# 写属性就可以了。但是要注意!!!
# 属性必须全部大写,小写不生效
NAME = "张三"
from config import Config # 导入配置类
app.config.from_object(Config)
# 方法2:从配置文件中加载
# 创建config_file.py文件
CLASS = "h2202A"
app.config.from_pyfile("./config_file.py")
# 方法3:从环境变量中加载
# 需要自己设置环境变量
app.config.from_envvar("ccc")
单例模式
代码:
class Cat(object):
cat = None
def __new__(cls, *args, **kwargs): # 实例化时的魔术方法
if not cls.cat:
cls.cat = super().__new__(cls)
return cls.cat
else:
return cls.cat
cat1 = Cat()
cat2 = Cat()
print(id(cat1))
print(id(cat2))
作用:
1 控制资源的使用,通过线程同步来控制资源的并发访问;
2 控制实例产生的数量,达到节约资源的目的。
3作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的两个线程或者进程之间实现通信
单例模式
代码:
class FSK():
def create(self, product_name):
product = eval(product_name)()
return product
class iPhone():
def name(self):
print("我是Iphone")
class iPod():
def name(self):
print("我是iPod")
if __name__ == '__main__':
prod_name = input("请输入你要生产的产品:")
prod = FSK().create(prod_name)
prod.name()
路由
1.methods 指定当前路由允许的请求方式
2.end_point 路由别名
3.url_for() 此函数通过理由别名寻找路由
启动方式
1.app.run() 代码启动
2.flask run 命令行启动
3.通过PyCharm运行