首页 > 其他分享 >Flask 路由

Flask 路由

时间:2024-12-11 20:57:44浏览次数:3  
标签:return Flask app 路由 route def user

Flask 路由是 Web 应用程序中将 URL 映射到 Python 函数的机制。

Flask 路由是 Flask 应用的核心部分,用于处理不同 URL 的请求,并将请求的处理委托给相应的视图函数。

以下是关于 Flask 路由的详细说明,包括路由的定义、参数、方法和规则等。

  1. 定义路由:使用 @app.route('/path') 装饰器定义 URL 和视图函数的映射。
  2. 路由参数:通过动态部分在 URL 中传递参数。
  3. 路由规则:使用类型转换器指定 URL 参数的类型。
  4. 请求方法:指定允许的 HTTP 请求方法。
  5. 路由函数返回:视图函数可以返回不同类型的响应。
  6. 静态文件和模板:管理静态文件和动态渲染 HTML 模板。
  7. 路由优先级:确保路由顺序正确,以避免意外的匹配结果。

1. 定义路由

基本路由定义:

实例

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return 'Welcome to the Home Page!'

  • @app.route('/'):装饰器,用于定义路由。/ 表示根 URL。
  • def home():视图函数,当访问根 URL 时,返回 'Welcome to the Home Page!'

2. 路由参数

路由可以包含动态部分,通过在路由中指定参数,可以将 URL 中的部分数据传递给视图函数。

实例

@app.route('/greet/<name>')
def greet(name):
    return f'Hello, {name}!'

3. 路由规则

路由规则支持不同类型的参数和匹配规则。

类型规则:

  • 字符串(默认): 匹配任意字符串。
  • 整数(<int:name>): 匹配整数值。
  • 浮点数(<float:value>): 匹配浮点数值。
  • 路径(<path:name>): 匹配任意字符,包括斜杠 /

实例

@app.route('/user/<int:user_id>')
def user_profile(user_id):
    return f'User ID: {user_id}'

@app.route('/files/<path:filename>')
def serve_file(filename):
    return f'Serving file: {filename}'

  • @app.route('/user/<int:user_id>'):匹配整数类型的 user_id
  • @app.route('/files/<path:filename>'):匹配包含斜杠的路径 filename

4. 请求方法

Flask 路由支持不同的 HTTP 请求方法,如 GET、POST、PUT、DELETE 等。可以通过 methods 参数指定允许的请求方法。

实例

@app.route('/submit', methods=['POST'])
def submit():
    return 'Form submitted!'

5. 路由转换器

Flask 提供了一些内置的转换器,可以对 URL 中的参数进行特定类型的转换。

常用转换器:

  • int 匹配整数。
  • float 匹配浮点数。
  • path 匹配任意路径,包括斜杠。

实例

@app.route('/items/<int:item_id>/details')
def item_details(item_id):
    return f'Item details for item ID: {item_id}'

  • <int:item_id>:将 URL 中的 item_id 转换为整数。

6. 路由函数返回

视图函数可以返回多种类型的响应:

  • 字符串:返回纯文本响应。
  • HTML:返回 HTML 页面。
  • JSON:返回 JSON 数据。
  • Response 对象:自定义响应。

实例

from flask import jsonify, Response

@app.route('/json')
def json_response():
    data = {'key': 'value'}
    return jsonify(data)

@app.route('/custom')
def custom_response():
    response = Response('Custom response with headers', status=200)
    response.headers['X-Custom-Header'] = 'Value'
    return response

  • jsonify(data):将字典转换为 JSON 响应。
  • Response('Custom response with headers', status=200):创建自定义响应对象。

7. 静态文件和模板

静态文件(如 CSS、JavaScript、图片)可以通过 static 路由访问。模板文件则通过 templates 文件夹组织,用于渲染 HTML 页面。

静态文件访问:

<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">

实例

from flask import render_template

@app.route('/hello/<name>')
def hello(name):
    return render_template('hello.html', name=name)

模板文件渲染:

实例

from flask import render_template

@app.route('/hello/<name>')
def hello(name):
    return render_template('hello.html', name=name)

模板文件 (templates/hello.html):

实例

<!DOCTYPE html>
<html>
<head>
    <title>Hello</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

8. 路由优先级

Flask 按照定义的顺序匹配路由,第一个匹配成功的路由将被处理。确保更具体的路由放在更一般的路由之前。

实例

@app.route('/user/<int:user_id>')
def user_profile(user_id):
    return f'User ID: {user_id}'

@app.route('/user')
def user_list():
    return 'User List'

  • /user/123 将匹配到 /user/<int:user_id>,而 /user 将匹配到 user_list

标签:return,Flask,app,路由,route,def,user
From: https://blog.csdn.net/zhao1iyong/article/details/144357134

相关文章

  • flask框架安大校园交易网站毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景随着互联网的快速发展,校园交易网站在高校的商业活动和学生生活中扮演着越来越重要的角色。关于校园交易网站的研究,现有研究主要以大型......
  • flask框架电力集团电子商务采购平台毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于电力集团电子商务采购平台的研究,现有研究多聚焦于传统采购模式向电商采购模式转变的一般性优势探讨,如提高效率、降低成本等方面。......
  • flask毕设校园闲置物品回收系统设计与实现(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着高校规模的扩大和学生消费能力的提升,校园内产生了大量的闲置物品,这些物品不仅占用空间资源,还可能对环境造成负担。关于校园闲置物品回......
  • flask毕设校园闲置物品交易平台的设计与实现(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着信息技术的飞速发展和资源循环利用理念的深入人心,校园闲置物品交易平台的设计与实现成为了当前研究的热点。目前,国内外对于二手交易平......
  • vue 路由跳转,导致页面样式错乱,刷新又好了的情况
    在项目开始的时候,把所有的代码都码好。在页面跳转的时候总有几个页面,在跳到该页面时样式全错位了,但是刷新一下就又好。跳转后页面的样式会沿用了前一个页面的样式,导致页面错乱。解决办法:  在跳转前和跳转后页面的style上加上scoped<stylescoped>header{width:10......
  • vue中通过路由跳转的三种方式
    router-view实现路由内容的地方,引入组件时写到需要引入的地方需要注意的是,使用vue-router控制路由则必须router-view作为容器。通过路由跳转的三种方式1、router-link【实现跳转最简单的方法】<router-linkto='需要跳转到的页面的路径> 浏览器在解析时,将它解析成一个类......
  • StarBlog博客Vue前端开发笔记:(2)页面路由
    前言Vue.js使用虚拟DOM处理单页面,然后使用Webpack打包。通过上一篇文章的例子,读者也许已经发现,无论语法和写法如何不同,Vue.js程序打包后都是一个单一的HTML文件,同时会引入一个标准的JavaScript文件。Vue.js中编写的所有代码都被Webpack自动打包成可以被浏览器解析......
  • flask毕设校园生活服务平台(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着信息技术的迅猛发展,校园生活服务平台的建设已成为提升校园管理效率和服务质量的重要途径。当前,国内外关于校园生活服务平台的研究主要......
  • flask毕设校园生活互助(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景校园生活互助作为提升校园生活质量和促进学生间互助交流的重要途径,近年来受到广泛关注。现有研究主要集中在校园生活服务平台的建设与管理......
  • Flask 基本概念
    详细了解Flask的一些基本概念。了解Flask的基本概念对于开发高效的Web应用非常重要。以下是Flask的主要基本概念的详细解析:路由:路由是URL到Python函数的映射。Flask允许你定义路由,这样当特定的URL被访问时,就会调用相应的函数。视图函数:视图函数是处理请求......