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

server/2024/9/24 8:43:49/
  • 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/server/121262.html

相关文章

Apache Cordova/PhoneGap

Apache Cordova和PhoneGap是两个在移动应用开发领域备受关注的开源框架,它们有着紧密的联系和显著的区别。本文将从起源与发展、技术特点、功能与应用、社区与文档资源、性能与限制以及未来发展趋势等多个方面,对Apache Cordova和PhoneGap进行详细探讨。…

spring中ApplicationContext的用法和作用举例

在Spring框架中,ApplicationContext是Spring IoC(Inversion of Control,控制反转)容器的核心接口之一。它负责管理和配置应用程序中的Bean,并提供了丰富的功能,如依赖注入、事件发布、国际化等。下面将详细…

ubuntu22 解决docker无法下载镜像问题

参考在 Ubuntu 中安装 Docker_ubuntu安装docker-CSDN博客 安装docker完成后,运行如下命令验证 Docker 服务是否在运行: systemctl status docker 运行(sudo docker run hello-world)例子报错: 问题:Docker…

Sentinel-1 数据处理时如何手动下载高程数据

在Sentinel-1 数据数据预处理时,会使用高程数据进行地形校正。但选择自动下载高程时,由于网络原因经常会卡死,造成预处理过程不能正常进行! 这个问题经过我的反复实践,可以通过手动下载高程数据来解决。下面是具体方法…

使用IDA Pro动态调试Android APP

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 关于 android_server android_server 是 IDA Pro 在 Android 设备上运行的一个调试服务器。 通过在 Android 设备上运行android_server,IDA Pro …

C++(学习)2024.9.20

目录 C面向对象的基础知识 this指针 概念 功能 1.类内调用成员 2.区分重名的成员变量和局部变量 3. 链式调用 static关键字 1.静态局部变量 2.静态成员变量 3.静态成员函数 4.单例设计模式 const关键字 1.const修饰成员函数 2.const修饰对象 3.const修饰成员变量…

GNU链接器(LD):输入分区和输出分区介绍

0 参考资料 GNU-LD-v2.30-中文手册.pdf GNU linker.pdf1 前言 一个完整的编译工具链应该包含以下4个部分: (1)编译器 (2)汇编器 (3)链接器 (4)lib库 在GNU工具链中&…

[vulnhub] Hackademic.RTB1

第一次打靶机,思路看的红队笔记 https://www.vulnhub.com/entry/hackademic-rtb1,17/ 环境:kali Linux - 192.168.75.131,靶机 - 192.168.75.132 主机发现和端口扫描 扫描整个网络有哪台机子在线,不进行端口扫描 nmap -sP 192.16…