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

news2024/9/23 13:00:26
  • 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 应用的基础,提供了应用的整体结构和功能

from flask import Flask,jsonify
from flask_cors import CORS

#实例化flask对象
app=Flask(__name__)

#配置跨域
CORS(app,cors_allowed_origins="*") #跨域允许远端所有人访问

3.配置路由

@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项目

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.coloradmin.cn/o/2157597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文了解什么是大模型?到底大模型有什么用呢?

党中央、国务院面向未来准确把握时代大势,已于十三五期间部署推进数字中国建设,《国民经济和社会发展第十四个五年规划和2035年远景目标纲要》更是将“加快数字化发展,建设数字中国”单列成篇,要求“提高数字政府建设水平”&#…

Kettle的实战练习指南:从数据导入到ETL自动化

在数据集成和数据仓库建设中,Kettle作为一个强大的开源ETL工具,提供了灵活的数据抽取、转换和加载功能。本文将通过实战案例,详细介绍Kettle在数据导入、ETL流程设计、自动化任务调度等方面的应用。 一、数据导入 1. SQL语句导入 导入sql语…

机器人速度雅可比矩阵求解(2自由度平面关节机器人)

关节速度和末端速度空间的映射需要计算雅可比矩阵的逆矩阵,在博途PLC里如何计算一个方阵的逆矩阵,大家可以参考下面这篇文章: 博途PLC矩阵求逆 矩阵求逆 博图SCL_博图矩阵运算-CSDN博客文章浏览阅读839次。本文介绍如何用C语言实现矩阵求逆的过程,详细解析了相关代码,适…

Openai gym environment for multi-agent games

题意:用于多智能体游戏的 OpenAI Gym 环境 问题背景: Is it possible to use openais gym environments for multi-agent games? Specifically, I would like to model a card game with four players (agents). The player scoring a turn starts the…

如何使用地图Picker快捷接入地图服务?

在移动互联网的浪潮中,地图能力的使用已成为应用开发的关键领域。对于依赖地理位置信息的应用而言,用好地图服务不仅是基本要求,更是提升用户体验、实现个性化服务的关键。 但是在使用地图服务过程中,地图组件提供的设置参数种类…

Python学习——【4.5】数据容器:set集合

文章目录 【4.5】数据容器:set集合一、集合的定义格式二、集合的特点三、集合的常见操作四、集合的遍历 【4.5】数据容器:set集合 一、集合的定义格式 为什么使用集合 我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景。为…

Day4-C语言高级编程

1. gcc和gdb的用法 GNU工具:编译工具:把一个源程序编译为一个可执行程序调试工具:能对执行程序 进行源码或汇编调试软件工程工具:用于协助多人开发或大型软件项目的管理,如make、CVS、Subvision其他工具:用…

DHCP服务器搭建

1. DHCP工作原理 DHCP动态分配IP地址,客户端广播,服务端单播 2. DHCP服务器安装 2.1 安装DHCP # yum install -y dhcp-server 2.2 修改配置文件 # cd /etc/dhcp/ # ls # vi dhcpd.conf dhcpd.conf 主配置文件 第一行:全局dhcp服务器地…

STM32cubeMX + VScode开发GD32移植(HAL库通用),保姆级!!!!!!!

STM32cubeMX VScode开发GD32移植(HAL库通用),保姆级!!!!!!! 文章目录 STM32cubeMX VScode开发GD32移植(HAL库通用),保姆级!!!&#…

构建高可用和高防御力的云服务架构第五部分:PolarDB(5/5)

引言 云计算与数据库服务 云计算作为一种革命性的技术,已经深刻改变了信息技术行业的面貌。它通过提供按需分配的计算资源,使得数据存储、处理和分析变得更加灵活和高效。在云计算的众多服务中,数据库服务扮演着核心角色。数据库服务不仅负…

828华为云征文 | 云服务器Flexus X实例:RAG 开源项目 FastGPT 部署,玩转大模型

目录 一、FastGPT 简介 二、FastGPT 部署 2.1 下载启动文件 2.2 开放端口权限 2.3 启动 FastGPT 三、FastGPT 运行 3.1 登录 FastGPT 3.2 知识库 3.3 应用 四、总结 本篇文章主要通过 Flexus云服务器X实例 部署 RAG 开源项目 FastGPT,通过 FastGPT 可以使…

【5】AT32F437 OpenHarmony轻量系统移植教程(2)

开源地址:https://gitee.com/AT32437_OpenHarmony 学习本文档的意义 1.学习移植OpenHarmony轻量系统到AT32全系列mcu上,本文档移植的具体型号为AT32F437ZMT7 2.学习OpenHarmony轻量系统开发 3.适配vprintf, vfprintf, printf, snprintf 和sprintf 1…

Mybatis自定义TypeHandler,直接存储枚举类对象

在这篇文章中,我们已经知道如何使用枚举类直接接受前端的数字类型参数,省去了麻烦的转换。如果数据库需要保存枚举类的code,一般做法也是代码中手动转换,那么能不能通过某种机制,省去转换,达到代码中直接保…

中间件安全(二)

本文仅作为学习参考使用,本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言: 前文链接:中间件安全(一) 本文主要讲解Couchdb数据库未授权越权漏洞(CVE-2017-12635)。 靶场链接:Vu…

(11)(2.1.2) DShot ESCs(三)

文章目录 前言 5 附加配置 前言 DShot 是一种数字 ESC 协议,它允许快速、高分辨率的数字通信,可以改善飞行器控制,这在多旋翼和 quadplane 应用中特别有用。 5 附加配置 DShot更新率 发送 DShot 脉冲的频率可以通过SERVO_DSHOT_RATE配置…

jvm中的程序计数器、虚拟机栈和本地方法栈

引言 本文主要介绍一下jvm虚拟机中的程序计数器、虚拟机栈和本地方法栈。 程序计数器 作用 作用:记录下一条jvm指令的执行地址。 下面具体描述一下程序计数器的作用。 这里有两个代码,右边的为源代码,左边为编译之后的字节码。 当我们…

#面试系列-腾讯后端一面

03.腾讯后端一面 项目相关 面试官可能是 Go 方向的,我面试的是 Java 方向的,所以面试官也没有问我简历上的项目,主要问了实验室中做的项目,哪个项目比较有技术挑战? 面试主要问了计算级网络相关,以及如果让…

企业应该怎样合理使用AI技术与混合云?

企业合理使用AI技术和混合云的关键在于明确业务目标、评估技术需求并制定相应的战略规划。下面是一些指导原则和步骤,可以帮助企业有效地结合AI技术和混合云: 1. 定义业务目标 明确需求:确定哪些业务流程可以通过AI优化,哪些数据处…

Python和R及MATLAB和C与Lua去相关生物医学图像处理和神经网络物理学及数学变换算法

🎯要点 主成分分析降维显微镜成像精度评估算法脑电图磁共振成像降噪算法图像颜色分离显现特征球面转换:主成分分析和零相位分量分析零相位分量分析和主成分分析平均互相关算法图像白化计算噪声协方差和绘制白化数据高能物理分类器分离不同信号白化变换优化批量归一…

【贪心算法】贪心算法二

贪心算法二 1.最长递增子序列2.递增的三元子序列3.最长连续递增序列 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.最长递增子序列 题目链…