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

  • 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应用实例,配置应用,设置路由

导入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,便于用户记忆和使用

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

相关推荐
fmdpenny15 分钟前
Vue3初学之商品的增,删,改功能
开发语言·javascript·vue.js
通信.萌新21 分钟前
OpenCV边沿检测(Python版)
人工智能·python·opencv
Bran_Liu27 分钟前
【LeetCode 刷题】字符串-字符串匹配(KMP)
python·算法·leetcode
小美的打工日记27 分钟前
ES6+新特性,var、let 和 const 的区别
前端·javascript·es6
weixin_3077791330 分钟前
分析一个深度学习项目并设计算法和用PyTorch实现的方法和步骤
人工智能·pytorch·python
涔溪1 小时前
有哪些常见的 Vue 错误?
前端·javascript·vue.js
程序猿online1 小时前
前端jquery 实现文本框输入出现自动补全提示功能
前端·javascript·jquery
Channing Lewis1 小时前
flask实现重启后需要重新输入用户名而避免浏览器使用之前已经记录的用户名
后端·python·flask
Channing Lewis1 小时前
如何在 Flask 中实现用户认证?
后端·python·flask
水银嘻嘻2 小时前
【Mac】Python相关知识经验
开发语言·python·macos