- pycharm新建flask项目时,会提供一个创建flask项目的导向,自动设置虚拟环境,并且安装flask及其依赖
- 而vscode新建flask项目时,需要手动设置虚拟环境并安装flask,需要在终端使用pip install flask命令来安装flask及其依赖
- 如果是使用pycharm新建了一个flask项目,然后用vscode打开,那么就意味着flask已经安装及其依赖已经安装,虚拟环境也已经安装,只需要确保vscode选择的python解释器和pycharm的一样即可
以下是vscode新建flask项目:
一:新建虚拟环境并创建flask项目文件
-
新建文件夹 flaskproject_virtualenv
-
创建虚拟环境:
从文件夹flaskproject_virtualenv路径进入命令行工具安装虚拟环境工具 pip install virtualenv(若是不行,更换为pypi源 :pip install virtualenv --index-url=https://pypi.org/simple)
创建虚拟环境 virtualenv venv(venv是虚拟环境名称,自定义)
激活虚拟环境 venv\Scripts\activate
输入venv\Scripts\activate命令回车激活虚拟环境,可以看到路径之前已经有venv,说明激活成功
-
虚拟环境中新建flask项目
安装flask框架
-
在flaskproject_virtualenv文件夹下新建flask项目文件manage.py,该文件和虚拟环境文件夹在同一级目录
二:项目入口文件的配置,启动应用
主要有:导入flask及相关库,创建flask应用实例,配置应用,设置路由
导入flask,jsonify,CORS
单一入口模式:所有请求都由manege.py控制,所以才有项目入口文件
manage.py项目入口文件创建好之后导入包:其一是flask框架文件,其二是跨域文件(跨域,因为有浏览器同源策略,不同协议,不同域名,不同端口,不能通信)
from flask import Flask,jsonify from flask_cors import CORS #从flask中导入Flask项目文件和jsonify。jsonify,序列化操作使用,是用于将python内置数据类型转换为json数据类型,作为接口返回给前端,就是通过jsonify实现 #其二是跨域文件(跨域,因为有浏览器同源策略,不同协议,不同域名,不同端口,不能通信)
之前设置了pip安装时会使用阿里云镜像源,其是一个第三方镜像,特别是在中国区能提供更快的下载速度
pypi作为官方源,拥有最新的包和版本,稳定性和可靠性较高
继安装flask_cors用阿里云镜像源失败之后转换为pypi官方源
通过pip config list查看当前配置,发现镜像源确实被设置为了阿里云镜像源
恢复默认pypi镜像源:pip config unset global.index-url
2. 实例化flask对象(python是面向对象语言,要用到某些模块,必须实例化对象,把它作为对象返回,才能使用)
作用:
创建应用上下文:Flask 对象是应用的核心,负责管理请求、响应和应用的配置。实例化后,Flask 就能够处理所有的请求和响应。
配置管理:实例化 Flask 对象时,可以传入配置参数,如数据库连接、调试模式等。这些配置会影响应用的行为和性能。
路由和视图函数 :Flask 对象允许你定义路由和视图函数,将 URL 映射到相应的处理逻辑。实例化后,你可以使用
@app.route
装饰器来定义路由。中间件和扩展:Flask 支持中间件和扩展(如数据库、认证等),实例化的 Flask 对象是这些扩展的注册和管理中心。
蓝图支持:通过 Flask 对象,可以使用蓝图(Blueprints)来组织应用的不同部分,促进模块化和可维护性。
总之,实例化 Flask 对象是构建一个 Flask 应用的基础,提供了应用的整体结构和功能
python
from flask import Flask,jsonify
from flask_cors import CORS
#实例化flask对象
app=Flask(__name__)
#配置跨域
CORS(app,cors_allowed_origins="*") #跨域允许远端所有人访问
3.配置路由
python
@app.route('/',methods=['GET'])#项目首页就是/,接着是请求方,get通过url浏览器方式请求。默认通过get拆线呢方式来配置首页。使用到了@装饰器语法糖。
def index():#首页
res = {"msg":"你好"} #字典
return jsonify(res) #字典序列化为json数据类型
所谓装饰器,就是一个函数,想要在该函数中添加另外的函数增加其功能,除了这样定义手动添加之外
def say_hello():
print("Hello!")
say_hello = my_decorator(say_hello) # 手动应用装饰器
还可以使用@语法糖自动添加
@my_decorator # 这行是装饰器的简写
def say_hello():
print("Hello!"
4.启动flask项目
python
if __name__ == "__main__":#main入口才会运行
app.run(debug=True,host="0.0.0.0",port=5000)
#debug调试模式,修改代码时项目会自动重启而不需要自行去重启
#host="0.0.0.0",可以从任何网址或ip访问我们项目
#port=5000,端口号5000,跑在5000端口
从flask项目根目录文件夹进入项目命令行·
输入命令激活虚拟环境,前面显示(venv),即为激活成功
venv\Scripts\activate
上一个flask项目时直接在系统环境变量中设置了项目入口文件是App.py。现在如果直接在命令行flask run启动的话是会报错的,所以要在命令行设置FLASK_APP=manage.py,回车之后输入flask run
flask run 和 python manage.py之间的区别
flask run启动:
python manage.py启动:
可以看到使用python manage.py时,会出现更多调试信息。
这是因为
python manage.py
时,它直接运行你的 Flask 应用,通常会在代码中包含更多调试信息,比如正在监听的地址和调试模式的状态。
flask run
是一个更简化的命令,默认情况下只会提供基本的信息。如果希望看到更多输出,可以在运行时加上--debug
参数 flask run --debug
补充:也可以ctrl+`打开vscode终端输入flask run进行启动
若是不行,右击vscode图标,以管理员身份运行,接着再执行flask run
补充:
标红的警告信息是指当前正在使用 Flask 自带的开发服务器。这种服务器适合开发和测试,但不适合用于生产环境。它的特点是性能较低,且在并发处理请求时可能不够稳定。
- Development Server:这是 Flask 默认的服务器,方便开发时快速运行和测试应用。
- Production Deployment:指的是在正式环境中使用的服务器,比如 Gunicorn、uWSGI 或者其他 WSGI 服务器。它们通常能处理更多的请求,并具备更好的性能和稳定性。
项目入口文件启动之后,flask应用开始监听指定的端口(默认是5000),并且等待来自客户端的请求。可以在浏览器中访问该地址,查看应用的功能和页面。在浏览器中输入
http://127.0.0.1:5000
或http://localhost:5000
- 127.0.0.1 是回环地址(loopback address),用于指代本机。它是 IPv4 的标准地址。
- localhost 是一个主机名,通常解析为 127.0.0.1,便于用户记忆和使用
调试模式开启时,代码更改后会自动重启,并提供调试信息。可以在终端查看请求日志和任何错误信息。