当前位置: 首页 > news >正文

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

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 herereturn '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的比较

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


http://www.mrgr.cn/news/93341.html

相关文章:

  • Redis|集群 Cluster
  • 软考架构师笔记-存储管理
  • 【15】蚂蚁链产品与服务
  • AI绘画软件Stable Diffusion详解教程(6):文生图、提示词细说与绘图案例
  • java+jvm笔记
  • 【长安大学】苹果手机/平板自动连接认证CHD-WIFI脚本(快捷指令)
  • SQL注入的原理及详细运用
  • 从0到1入门Linux
  • java 重点知识 — JVM存储模块与类加载器
  • 从0开始的操作系统手搓教程21:进程子系统的一个核心功能——简单的进程切换
  • Webpack分包与合包深度解析
  • Python 网络爬虫教程与案例详解
  • qt实践教学(编写一个代码生成工具)持续更新至完成———
  • HCIA-IP路由动态-RIP
  • c++里左值和右值
  • 带你从入门到精通——自然语言处理(五. 自注意力机制和transformer的输入部分)
  • SpringBoot系列之Spring AI+DeekSeek创建AI应用
  • JavaWeb-HttpServletRequest请求域接口
  • Kubernetes教程(四)Dockerfile构建镜像
  • NLP基础之传统RNN模型