《每天5分钟用Flask搭建一个管理系统》第3章:路由与视图

第3章:路由与视图

3.1 路由的定义和作用

路由是URL到视图函数的映射。在Flask中,路由定义了当用户访问特定URL时应该调用哪个函数来处理请求。

示例代码:定义路由

python 复制代码
from flask import Flask
app = Flask(__name__)

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

在这个例子中,@app.route('/')装饰器定义了一个路由,当用户访问网站的根URL时,将调用home函数。

3.2 视图函数的编写

视图函数是处理请求并返回响应的函数。它们通常接收请求对象作为第一个参数,但也可以不使用。

示例代码:编写视图函数

python 复制代码
@app.route('/about')
def about():
    return 'This is the About Page.'
3.3 URL规则和动态路由

URL规则可以包含变量部分,使得路由可以匹配多种URL模式。

示例代码:动态路由

python 复制代码
@app.route('/user/<username>')
def show_user_profile(username):
    return f'User {username}'

在这个例子中,<username>是一个变量,可以匹配任何字符,直到下一个斜杠。

3.4 HTTP方法的处理

视图函数可以处理不同的HTTP方法,如GET、POST、PUT等。

示例代码:处理HTTP方法

python 复制代码
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        return do_the_login()
    else:
        return show_the_login_form()

在这个例子中,login视图函数可以处理GET请求来显示登录表单,以及POST请求来执行登录。

3.5 路由的高级特性

Flask的路由系统还支持一些高级特性,如路由的合并、转换和保护。

示例代码:使用methodssubdomain参数

python 复制代码
@app.route('/api/data', methods=['GET', 'POST'], subdomain='api')
def api_data():
    if request.method == 'POST':
        return process_data()
    else:
        return get_data()

在这个例子中,路由仅在子域名api上有效,并且可以处理GET和POST请求。

3.6 错误处理

Flask允许你定义错误处理视图,来捕获和处理特定的错误。

示例代码:定义错误处理视图

python 复制代码
@app.errorhandler(404)
def page_not_found(error):
    return 'This page does not exist', 404
3.7 总结

本章介绍了Flask中的路由和视图,包括如何定义路由、编写视图函数、使用动态路由和处理HTTP方法。

相关推荐
Moe4883 分钟前
合并Pdf、excel、图片、word为单个Pdf文件的工具类(技术点的选择与深度解析)
java·后端
又过一个秋3 分钟前
CyberRT Transport传输层设计
后端
Java水解4 分钟前
20个高级Java开发面试题及答案!
spring boot·后端·面试
Moe4888 分钟前
合并Pdf、excel、图片、word为单个Pdf文件的工具类(拿来即用版)
java·后端
bcbnb8 分钟前
手机崩溃日志导出的工程化方法,构建多工具协同的跨平台日志获取与分析体系(iOS/Android 全场景 2025 进阶版)
后端
Java水解11 分钟前
为何最终我放弃了 Go 的 sync.Pool
后端·go
java1234_小锋16 分钟前
[免费]基于python的Flask+Vue医疗疾病数据分析大屏可视化系统(机器学习随机森林算法+requests)【论文+源码+SQL脚本】
python·机器学习·数据分析·flask·疾病数据分析
二川bro32 分钟前
第41节:第三阶段总结:打造一个AR家具摆放应用
后端·restful
aiopencode44 分钟前
苹果应用商店上架全流程 从证书体系到 IPA 上传的跨平台方法
后端
百***86051 小时前
Spring BOOT 启动参数
java·spring boot·后端