flask轻松入门,概念讲解

news2024/11/28 3:08:12

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 Flask

app = 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 Flask

app = 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 Flask

app = 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 Flask

app = 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=2
    print(helloWorld)
    #输出静态文件路径
    style = url_for('static', filename='style.css')
    return f'<a href="{helloWorld}">helloWorld<a/>'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1794200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL Developer管理RESTful 服务

RESTful 服务依赖于ORDS&#xff08;Oracle REST Data Services&#xff09;&#xff0c;所以在进行本实验前&#xff0c;请先确认数据库服务器上的ORDS服务已启动&#xff1a; $ systemctl status ords ● ords.service - Oracle REST Data ServicesLoaded: loaded (/etc/sys…

动态规划7:LCR 166. 珠宝的最高价值

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接&#xff1a;LCR …

最新版wordpress网创资源美化以及更新自动同步插件

最新更新了美化右侧悬浮图标 底部分类板块&#xff0c;以及文章自动同步插件 1.支持分类替换 将主站同步过来的文章分类进行替换 2.支持本地化文章图片 &#xff08;使用储存桶可能会导致无法保存图片&#xff09; 3.支持自定义文章作者&#xff08;选择多个作者则同步到的…

Python round函数详解

大家好&#xff0c;在 Python 编程中&#xff0c;经常需要对数字进行舍入操作。无论是在金融领域的货币计算&#xff0c;还是科学计算中的数据处理&#xff0c;都可能需要使用到四舍五入功能。为了满足这一需求&#xff0c;Python 提供了一个内置函数 round()&#xff0c;它能够…

Java多线程-初阶1

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 1. 认识线程&#xff08;Thread&#xff09; 1.线程是什么 ⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代…

白酒:茅台镇白酒的精致包装与品牌形象

茅台镇&#xff0c;这个位于中国贵州省的小镇&#xff0c;因其与众不同的自然环境和杰出的酿酒工艺而成为世界著名的白酒产区。作为茅台镇的品牌&#xff0c;云仓酒庄豪迈白酒不仅在品质和口感上追求卓着&#xff0c;更在包装和品牌形象上展现出精致与品味。 云仓酒庄豪迈白酒的…

【vue-admin-template】设置前后端访问地址

最近在使用vue-admin-template模板进行二次开发&#xff0c;GitHub地址&#xff1a; Vue-Admin-Template。 如果要在该项目中设置前后端的访问IP及端口&#xff0c;可以这样做&#xff1a; 前端&#xff1a;在vue.config.js中&#xff1a; 后端&#xff1a;在request.js中&…

Django学习三:views业务层中通过models对实体对象进行的增、删、改、查操作。

文章目录 前言一、Django ORM介绍二、项目快速搭建三、操作1、view.pya、增加操作b、删除操作c、修改操作d、查询操作 2、urls.py 前言 上接博文&#xff1a;Django学习二&#xff1a;配置mysql&#xff0c;创建model实例&#xff0c;自动创建数据库表&#xff0c;对mysql数据…

Day44 代码随想录打卡|二叉树篇---找树左下角的值

题目&#xff08;leecode T513&#xff09;&#xff1a; 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 方法&#xff1a;本题需要找二叉树左下角的值&#xff0c;因此该节点首先是在最后一行&#xff0…

java——顺序表

前言&#xff1a;顺序表是线性表的一种&#xff0c;它是较于数组更加灵活的一种储存方式。线性表通常是逻辑上是连续的一条直线&#xff0c;但在物理上不是连续的。java中已经实现好了一个顺序表&#xff0c;搭配泛型可以支持各种类型的使用&#xff0c;下面就来介绍该如何使用…

如何修复d3dcompiler43.dll丢失问题,这三种方法可轻松解决

在计算机使用过程中&#xff0c;我们常常会遇到一些错误提示&#xff0c;其中之一就是“计算机缺失d3dcompiler43.dll”。这个问题可能会影响到计算机的正常运行&#xff0c;让我们无法正常使用某些软件或者游戏。那么&#xff0c;究竟什么是d3dcompiler43.dll&#xff1f;为什…

Golang | Leetcode Golang题解之第128题最长连续序列

题目&#xff1a; 题解&#xff1a; func longestConsecutive(nums []int) int {numSet : map[int]bool{}for _, num : range nums {numSet[num] true}longestStreak : 0for num : range numSet {if !numSet[num-1] {currentNum : numcurrentStreak : 1for numSet[currentNum…

构筑数字文创产业生态,推动集群发展

随着数字技术的飞速发展&#xff0c;数字影像文创产业正迎来前所未有的发展机遇。作为西部地区的文创产业高地&#xff0c;成都国际数字影像产业园积极响应时代潮流&#xff0c;致力于推动数字影像文创产业集群的发展&#xff0c;为文创产业的繁荣贡献力量。 成都国际数字影像产…

Vue3:eachars 折线图 数据不联动 和 tooltip: trigger: ‘axis‘ 不生效,不提示数据

问题1&#xff1a; 点击折线图的头部数据&#xff08;Email、UnionAds等&#xff09; 下面数据线不联动问题 问题2&#xff1a;下图是没有提示数据的Demo 这是echars官网的提示数据图 3.解决办法 &#xff08;1&#xff09;检查是否设置&#xff1a;trigger&#xff1a;axi…

上位机图像处理和嵌入式模块部署(f407 mcu中fatfs中间件使用)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们已经实现了spi norflash的驱动&#xff0c;理论上这已经可以实现数据的持久化保存了。为什么还需要一个文件系统呢&#xff1f;主要原因还…

神经网络 torch.nn---Linear Layers(nn.Linear)

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) torch.nn — PyTorch 2.3 documentation nn.Linear torch.nn.Linear(in_features, out_features, biasTrue, deviceNone, dtypeNone) 参数&#xff1a; in_features - 每个输入样本的大小out_features - 每个输出…

C++学习/复习12--vector的实现(三个基本成员函数/迭代器/扩容/插入删除/重载/测试/杨辉三角)

一、构造函数 1.匿名对象与构造函数 在C中&#xff0c;匿名对象是一个临时对象&#xff0c;它没有名称&#xff0c;通常在对象创建后&#xff0c;只使用一次后就被销毁。创建匿名对象的方式是在创建对象时不使用变量名。 下面是创建匿名对象的几种方式&#xff1a; 直接使用…

元宇宙数字藏品交易所,未来发展的大趋势

随着科技的飞速进步&#xff0c;元宇宙以其独特的魅力为数字世界绘制了一幅前所未有的宏伟蓝图。在这一宏大的背景下&#xff0c;数字藏品交易所作为连接虚拟与现实的桥梁&#xff0c;正以其卓越的优势&#xff0c;引领着数字藏品市场迈向新的高度。 首先&#xff0c;元宇宙为…

计算机组成原理·考点知识点整理

根据往年考试题&#xff0c;对考点和知识点的一个整理。 校验编码 码距 一种编码的最小码距&#xff0c;其实就是指这种编码的码距。码距有两种定义&#xff1a; 码距所描述的对象含义 2 2 2 个特定的码其二进制表示中不同位的个数一种编码这种编码中任意 2 2 2 个合法编码的…

汽车IVI中控开发入门及进阶(二十五):CVBS视频流

前言: AHD和CVBS是两种视频格式,在车载摄像头中,有支持传统CVBS模拟视频的摄像头,也有支持新的高分辨率AHD格式的摄像头。 CVBS视频是经典的模拟视频格式,在视频经常显示在小型监视器上的车辆上仍然最受欢迎。如果想要车辆的最大分辨率,可选择AHD格式,即高分辨率模拟视…