当前位置: 首页 > 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.lryc.cn/news/545311.html

相关文章:

  • 005 公网访问 docker rocketmq
  • C++11中的右值引用和完美转发
  • txt 转 json 使用python语言
  • Android Logcat 高效调试指南
  • 【Linux】从入门到精通:Make与Makefile完全指南
  • leetcode0014 最长公共前缀 -easy
  • 【星云 Orbit-F4 开发板】07. 用判断数据尾来接收据的串口通用程序框架
  • LLVM - 编译器前端 - 将源文件转换为抽象语法树(一)
  • 02_NLP文本预处理之文本张量表示法
  • 深圳SMT贴片加工核心工艺解析
  • P8720 [蓝桥杯 2020 省 B2] 平面切分--set、pair
  • 突破传统:用Polars解锁ICU医疗数据分析新范式
  • 命名实体识别与文本生成算法
  • 10.3 指针进阶_代码分析
  • 深入理解推理语言模型(RLM)
  • 在Nginx上配置并开启WebDAV服务的完整指南
  • 大语言模型学习
  • 夜天之书 #106 Apache 软件基金会如何投票选举?
  • 从Aurora看Xanadu可扩展模块化光量子计算机的现状与未来展望
  • WPS如何添加论文中的文献引用右上角小标
  • 如何理解语言模型
  • 准确-NGINX 1.26.2配置正向代理并编译安装的完整过程
  • 企业如何将ERP和BPM项目结合提升核心竞争力
  • Linux内核以太网驱动分析
  • 分布式微服务系统架构第92集:智能健康监测设备Java开发方案
  • 【推荐项目】023-游泳俱乐部管理系统
  • Webpack常见配置实例
  • C++核心编程之STL
  • Mac mini M4安装nvm 和node
  • Level DB --- 写流程架构