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

flask轻松入门,概念讲解

Hello World

Flask 是轻量级web框架,仅保留了核心功能:

  • 请求响应处理
  • 模板渲染
  • URL路由

文章目录

  • Hello World
    • flask命令模式
    • python命令模式
    • 两种模式对比
    • 修改入口文件配置
      • flask命令修改
      • python命令修改
    • 修改端口和地址
      • flask命令修改
      • python命令修改
    • 修改 URL 路由
      • 路由的基本组成:
      • 路由的工作流程:
      • 路由的优点:
      • Flask动态路由
      • Flask多URL绑定
      • 修改视图函数
    • `url_for` 函数
      • 作用
      • 应用

flask命令模式

  • 命令行运行 flask run
# ./app.py
from flask import Flaskapp = Flask(__name__)@app.route("/")
def helloWorld():return '<h1>Hello wusp!</h1><img src="http://helloflask.com/totoro.gif">'

注意点:

  • 默认端口 5000
  • 默认入口文件名称 app.py

python命令模式

  • ctrl+F10 pyharm 运行 。

  • 或者命令行 python app2.py

需要在代码里面增加 app.run()

# ./app.py
from flask import Flaskapp = Flask(__name__)@app.route("/")
def helloWorld():return '<h1>Hello wusp!</h1><img src="https://img.suzone.net/biaoqing/201808/3924b2dfb6bcf13730ba75919f2f005f.gif">'app.run()

两种模式对比

  • flask命令模式 运行和配置是调用 flask 命令,是 命令 + 代码的方式结合。
  • python命令模式,是纯代码,flask 相关的配置均使用代码,推荐。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

修改入口文件配置

flask命令修改

在 Windows CMD 中使用 set 命令:

set FLASK_APP=hello.py

在 Windows PowerShell 中则使用下面的命令:

$env:FLASK_APP = "hello.py"

python命令修改

直接运行 python xxx.py 就行了,但是需要增加代码 app.run()

修改端口和地址

flask命令修改

flask run --host=0.0.0.0 --port=8080

python命令修改

直接在代码里面修改配置就行了

if __name__ == "__main__":app.run(host="0.0.0.0",port=5600,debug=True)
# ./app.py
from flask import Flaskapp = Flask(__name__)@app.route("/")
def helloWorld():return '<h1>Hello wusp!</h1><img src="https://img.suzone.net/biaoqing/201808/3924b2dfb6bcf13730ba75919f2f005f.gif">'if __name__ == "__main__":app.run(host="0.0.0.0",port=5600,debug=True)

修改 URL 路由

URL路由(也称为“网址路由”或“Web路由”)是一种将Web请求(即用户在浏览器地址栏输入的URL)映射到代码中相应的处理函数或资源的技术。在Web开发中,路由是Web服务器或Web框架的一个核心功能,它允许开发者定义一组规则,这些规则确定不同的URL请求应该由哪个部分的代码来处理。

路由的基本组成:

  1. 请求方法:指定了请求的类型,最常见的是GET(读取数据)和POST(提交数据),但还有PUT、DELETE等其他类型。
  2. 路由路径:URL中的一部分,用于匹配请求的URL。它可以包含动态部分,这些部分用变量表示,通常以尖括号<variable_name>或冒号:variable_name来定义。
  3. 处理器函数:当路由匹配成功时,将调用的函数或方法。这个函数负责生成请求的响应。

路由的工作流程:

  1. 用户输入URL:用户在浏览器地址栏输入一个URL或点击一个链接。
  2. 服务器接收请求:Web服务器接收到请求后,会检查请求的URL和方法。
  3. 路由匹配:服务器根据预定义的路由规则查找匹配项。
  4. 执行处理器:一旦找到匹配的路由,服务器将调用相应的处理器函数。
  5. 生成响应:处理器函数生成响应(通常是HTML页面、JSON数据等),并将其发送回用户。

路由的优点:

  • 组织代码:通过将URL映射到特定的处理函数,可以使Web应用的代码结构更加清晰和模块化。
  • URL设计自由:开发者可以自由设计URL结构,使其既符合用户习惯也易于搜索引擎优化(SEO)。
  • 动态内容生成:可以定义动态路由,根据请求中的参数动态生成内容。
  • RESTful API支持:现代Web框架的路由系统支持RESTful API设计,便于构建和维护。

Flask动态路由

from flask import Flaskapp = Flask(__name__)@app.route('/home', methods=['GET'])
def home():return 'Welcome to the Home Page'@app.route('/users/<username>', methods=['GET'])
def show_user_profile(username):return f'User {username}'if __name__ == "__main__":app.run()

在这个示例中,Flask应用定义了两个路由:

  • /home 路由响应GET请求,由 home 函数处理。
  • /users/<username> 路由是一个动态路由,<username> 是一个变量,可以匹配任何用户名称,由 show_user_profile 函数处理。

当用户访问这些URL时,Flask会根据定义的路由规则将请求映射到相应的处理函数。

Flask多URL绑定

@app.route("/")
@app.route("/index")
@app.route("/home")
def helloWorld():return '<h1>Hello world!</h1>'

修改视图函数

视图函数的名称与URL路由规则无关

在这里插入图片描述

url_for 函数

作用

  • 以视图函数名作为参数,返回对应的url url_for('视图函数名')
    • 支持动态路由传参
    • 支持查询字符串传参
  • 静态文件URL url_for('static', filename='style.css')

应用

以下代码实现了:通过视图函数名称,拼接 a 链接 ,便捷的拿到视图的跳转地址。

@app.route("/url_for_test")
def url_for_test():helloWorld = url_for('helloWorld')#动态路由的形式,支持传参print(url_for('user_page', name='greyli'))  # 输出:/user/greyli# 非动态路由多出来的关键字,它们会被作为查询字符串附加到 URL 后面。print(url_for('test_url_for', num=2))  # 输出:/test?num=2print(helloWorld)#输出静态文件路径style = url_for('static', filename='style.css')return f'<a href="{helloWorld}">helloWorld<a/>'

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • nodejs最新某东h5st(4.7.2)参数分析与javascript逆向纯算法还原(含算法源码)(2024-06-09)
  • 红黑树的介绍与实现
  • python小tips
  • C++设计模式——Adapter适配器模式
  • 数据结构(C):二叉树前中后序和层序详解及代码实现及深度刨析
  • Effective Java 2 遇到多个构造器参数时要考虑使用构建器
  • neo4j入门并使用案例说明
  • 系统思考—心智模式
  • 嵌入式仪器模块:波形发生器模块(嵌入式)
  • IT学习笔记--Flink
  • 记一次postgresql拼接函数string_agg() 和row_number() 使用
  • 区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测
  • LeetCode110. 平衡二叉树
  • 国标GB/T 28181详解:校时流程详细说明
  • java asm使用切面
  • 《剑指offer》分解让复杂问题更简单
  • ES10 特性的完整指南
  • javascript从右向左截取指定位数字符的3种方法
  • js ES6 求数组的交集,并集,还有差集
  • JS函数式编程 数组部分风格 ES6版
  • Making An Indicator With Pure CSS
  • Python学习笔记 字符串拼接
  • React as a UI Runtime(五、列表)
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Spring-boot 启动时碰到的错误
  • Vue.js源码(2):初探List Rendering
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 飞驰在Mesos的涡轮引擎上
  • 工程优化暨babel升级小记
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 码农张的Bug人生 - 初来乍到
  • 那些被忽略的 JavaScript 数组方法细节
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 实习面试笔记
  • 说说我为什么看好Spring Cloud Alibaba
  • # C++之functional库用法整理
  • # dbt source dbt source freshness命令详解
  • #include到底该写在哪
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • #职场发展#其他
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (k8s)kubernetes集群基于Containerd部署
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • .env.development、.env.production、.env.staging
  • .net 受管制代码
  • .net程序集学习心得
  • .Net组件程序设计之线程、并发管理(一)
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • [1127]图形打印 sdutOJ
  • [2016.7 day.5] T2
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)