Pythonweb开发框架—Flask工程创建和@app.route使用详解

发布于:2025-03-03 ⋅ 阅读:(16) ⋅ 点赞:(0)

1.创建工程

如果pycharm是专业版,直接NewProject—>Flask

填写工程name和location后,点击右下角【create】,就会新建一个flask工程,工程里默认会建好一个templates文件夹、static文件夹、一个app.py文件

templates:存放html模板

static:存放不动态更改的文件,比如图片

app.py:启动入口

其中app.py中自动生成下面的代码

from flask import Flask

'''
创建一个名为app的Flask实列,参数为当前模块名或者当前包名。表示使用当前模块名或者包名来确定应用程序的根目录
'''
app = Flask(__name__)  


'''
路由函数
'''
@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


'''
main函数,启动入口
'''
if __name__ == '__main__':
    app.run()

如果Pycharm是非专业版,可以建普通工程后,手动新建templates文件夹、static文件夹、app.py文件。

2.启动工程

  • 方法一:右上角启动工程

  • 方法二:直接运行app.py文件

当出现 http://127.0.0.1:5000,工程就启动成功了

工程启动后就会一直监听5000端口,监听到HTTP 请求后封装为 Request 对象,然后匹配路由接口,如匹配到执行视图函数,匹配不到返回404。

3.@app.route视图函数开发

3.1 静态url

  • url路径是固定字符串
  • 必须参数:rule
  • 非必须参数:methods:http请求类型,默认为get,也可以是post,或者get和post同时支持

举例

测试


3.2 动态url

  • url路径是一个动态值
  • 必须参数:rule
  • 非必须参数:methods

举例

测试

3.3.请求参数处理

  • 导入模块:from flask import request

flask框架的request是用来存储http请求带过来的协议信息和参数的

  • 查询参数:以字典的形式存储在args里面

  • K=V的表单参数:以字典的形式存储在form

  • 参数为Json:以字典的形式存储在Json

  • JSON里包含json:以字典的形式存储在Json里

  • request里的其他信息

files:记录了请求上传的文件,返回类似于字典的数据

method:记录了请求使用的HTTP方法

url:记录了请求中的URL地址

host:记录了请求的域名

headers:记录了请求的请求头信息,返回类似于字典的数据

3.4 返回

  • 返回普通字符、数值

@app.route视图函数:

web调用测试:

  • 返回html页面:一般用于前后端不分离的场景

第一步:先创建html页面:在工程的templates文件夹下新建html页面

Flask框架里面支持前端模板语言jinja2模板,这个模板支持读取python变量

第二步:编写html

语法:

变量用:{{}}

分支判断:

循环支持:

注释:

举例

html:

@app.route视图函数:

from flask import Flask, render_template

@app.route('/login/with/html')
def login_with_html():
    tuple=(1,2,3,4,5,6)
    dict={
        "name":"testtesttest003",
        "id":2987654
    }
    return render_template('demo.html',name='测试测试测试测试测试',age=19,tuple=tuple,dict=dict)

web调用测试:

  • 返回json一般用于前后端分离的场景,前端用vue,nodejs

@app.route视图函数:

from flask import Flask,  jsonify

@app.route('/login/test/json')
def login_getjson():
    return jsonify({"code":"200",
                    "data":{"message":"Request successful"}})

web调用测试:

4.Flask和Django的比较

维度 Flask Django
路由系统 由装饰器 @app.route 显式定义 在urls.py 中管理,通过正则表达式匹配
项目结构 结构单一,轻量灵活 结构严格约定
灵活性 高,可自由组合扩展 低,需遵循框架设计
性能 轻量,适合高并发微服务 较重,但优化后性能足够应对多数场景
开发速度 前期快,需求越复杂后期自行集成扩展慢 有很多内置工具,减少重复开发,前期慢后期快
ORM 无内置,需自行扩展 内置 ORM,支持数据库迁移和关系映射
学习难度 简单易上手 需要学习的内容较多,需学习整套约定
适用场景 适合小型应用、微服务 适合大型企业级应用、多人协作,快速原型开发