新建flask项目,配置入口文件,启动项目

news/2024/9/24 7:44:57/
  • pycharm新建flask项目时,会提供一个创建flask项目的导向,自动设置虚拟环境,并且安装flask及其依赖
  • 而vscode新建flask项目时,需要手动设置虚拟环境并安装flask,需要在终端使用pip install flask命令来安装flask及其依赖
  • 如果是使用pycharm新建了一个flask项目,然后用vscode打开,那么就意味着flask已经安装及其依赖已经安装,虚拟环境也已经安装,只需要确保vscode选择的python解释器和pycharm的一样即可

以下是vscode新建flask项目:

一:新建虚拟环境并创建flask项目文件

  1. 新建文件夹  flaskproject_virtualenv

  2. 创建虚拟环境:
    从文件夹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,说明激活成功





     
  3. 虚拟环境中新建flask项目
    安装flask框架


     
  4. flaskproject_virtualenv文件夹下新建flask项目文件manage.py,该文件和虚拟环境文件夹在同一级目录

二:项目入口文件的配置,启动应用
主要有:导入flask及相关库,创建flask应用实例,配置应用,设置路由

  1. 导入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是面向对象语言,要用到某些模块,必须实例化对象,把它作为对象返回,才能使用)
作用:

  1. 创建应用上下文:Flask 对象是应用的核心,负责管理请求、响应和应用的配置。实例化后,Flask 就能够处理所有的请求和响应。

  2. 配置管理:实例化 Flask 对象时,可以传入配置参数,如数据库连接、调试模式等。这些配置会影响应用的行为和性能。

  3. 路由和视图函数:Flask 对象允许你定义路由和视图函数,将 URL 映射到相应的处理逻辑。实例化后,你可以使用 @app.route 装饰器来定义路由。

  4. 中间件和扩展:Flask 支持中间件和扩展(如数据库、认证等),实例化的 Flask 对象是这些扩展的注册和管理中心。

  5. 蓝图支持:通过 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:5000http://localhost:5000

  • 127.0.0.1 是回环地址(loopback address),用于指代本机。它是 IPv4 的标准地址。
  • localhost 是一个主机名,通常解析为 127.0.0.1,便于用户记忆和使用

调试模式开启时,代码更改后会自动重启,并提供调试信息。可以在终端查看请求日志和任何错误信息。

 



 


http://www.ppmy.cn/news/1529714.html

相关文章

策略模式与工厂模式的区别

《策略模式与工厂模式的区别》 策略模式(Strategy Pattern) 和 工厂模式(Factory Pattern) 都是常见的设计模式,虽然它们在设计目标上有一些相似之处,如解耦代码、增强扩展性,但它们的应用场景和…

STM32G474的SPI工作在从机模式

STM32G474的SPI工作在从机模式,我们令SPI1工作在主机模式,SPI2工作在从机模式中,实现数据数据互传。本测试只讲解SPI一主一从通讯,至于一主多从,程序中有说明。 SPI1外设用作主机,其接口:将SPI1…

UE5学习笔记22-武器瞄准和武器自动开火

0、一些疑问的记录 1.UUserWidget类和AHUD类的区别。两者都是关于界面显示的类。 实践: 想让界面和用户有交互使用UUserWidget,如果不要交互只是显示使用AHUD类,例如使用UUserWidget类制作开始界面,游戏开始,游戏设置&…

微服务--Gateway网关

在微服务架构中,Gateway(网关)是一个至关重要的组件,它扮演着多种关键角色,包括路由、负载均衡、安全控制、监控和日志记录等。 Gateway网关的作用 统一访问入口: Gateway作为微服务的统一入口&#xff0c…

【LeetCode】【C++】27. 移除元素 80.删除有序数组中的重复项Ⅱ

27. 移除元素 题目描述 详见LeetCode 27. 移除元素。 这是一道特别水的题,但是我第一时间没有想到正确的解答思路。 题目描述可以简述为,给定数组nums和元素val,原地删除nums中等于val的元素,并返回nums中不等于val元素的个数…

新提案:C++将变得内存安全

革命性的提案:C 将添加借用检查、生命周期、mut、sendsync 在遭受内存安全棒的打击两年后,C 社区发布了一项提案,以帮助开发人员编写更不容易受到攻击的代码。 Safe C 扩展提案旨在解决易受攻击的编程语言的致命弱点,即确保代码…

json Date格式化时间偏差8小时,而@JsonFormat注解有无法动态指定时区,如何解决?

use this method to set timezone and replace JsonFormat(pattern “yyyy-MM-dd HH:mm:ss”, timezone“GMT8”) (1)Model field JSONField(format DateTimeJsonFormatSerializer.TIME_FMT)//fastjson,JSON.toJSONString()JsonSerialize(using DateTimeJsonFormatSerializ…

如何从格式化的笔记本电脑或台式机中恢复照片

您想学习如何从已格式化的笔记本电脑或台式机中恢复已删除的照片吗?这篇文章解释了如何使用最佳格式的照片恢复软件来做到这一点。您可以通过简单的步骤格式化计算机后恢复已删除的图像。 将照片保存在笔记本电脑或 PC 硬盘上是很常见的。与相机存储卡和 USB 闪存驱…