「Flask」路由+视图函数

编程入门 行业动态 更新时间:2024-10-14 06:19:17

「Flask」路由+<a href=https://www.elefans.com/category/jswz/34/1770164.html style=视图函数"/>

「Flask」路由+视图函数

路由

路由的作用是将 HTTP 请求的 URL 路径映射到相应的函数处理程序。这样我们在开发过程中,就能将不同的 URL 路径与相应的函数处理程序关联起来,从而实现对 Web 应用的灵活控制。

路由可以分为静态路由和动态路由。两者主要是在形式上有一些区别,通常静态路由使用 @app.route(‘/’) 这样的装饰器形式。

而动态路由会使用变量名 ,形式通常为 @app.route(‘/’, )。当然,其中还可以传入其他类型的参数,如整型、浮点型,甚至 Path 路径等。

静态路由

路由的装饰器形式是 @app.route(‘/’),装饰器中的第一个参数是 ‘/’,括号当中的斜杠表示项目根路径。

静态路由的工作机制很容易理解:在我们的项目开发过程中,都是在根路径的基础上去修改 URL,对于不同的 URL 需要使用装饰器的方式来绑定不同的视图函数。

装饰器的重要参数

methods 参数

methods 是当前视图函数支持或者说函数指定的 HTTP 请求方法,比如POSTGET

from flask import Flask, request
app = Flask(__name__)
@app.route('/message', methods=['POST'])def message():name = request.form['name']location = request.form['location']age = request.form['age']return f'Hi, {name} ,you have live in {location} for {age} years!'
if __name__ == '__main__':app.run()

methods 参数主要用来指定函数的请求方法。在上面的案例中,路由装饰器的 methods 参数指定 message() 函数使用 POST 请求方法。在 message() 函数里的参数 name、location、age 使用 request 方法从表单中获取数据,message() 函数最后返回了表单中的名字、地址和年龄。

当用户在提交表单数据的时候,(你可以理解为前端设计了一个小框,你在框内输入东西然后点击回车,这个过程就是在提交表单数据,即POST),Flask 会自动调用视图函数 message(),并且从请求当中获取提交的数据。最后,我们将提交的数据返回并展示给用户。这就是 methods 核心作用。

endpiont 函数

Flask 路由装饰器 @app.route 中的 endpoint 参数是一个函数,用于指定要处理的 URL 的名称。这个参数可以是一个字符串,用于匹配要处理的 URL,也可以是一个函数,用于生成 URL

简单来说,就是指定该路由装饰器会调用哪个函数,本来不指定endpoint 的时候都会默认认为该路由是下面的函数,如果添加了endpoint参数,就会调用指定的函数,主要作用是实现函数的复用,可以让 Flask 能够处理相同 URL 的请求。比方说,如果有多个处理相同 URL 的视图函数,但是它们使用不同的 endpoint 参数,Flask 就会根据传入的 endpoint 参数来选择正确的视图函数。

from flask import Flask
app = Flask(__name__)
@app.route('/hello', endpoint='hello_world')  
def hello_world():  return 'Hello, World!'
if __name__ == '__main__':app.run()

url_for 装饰器

url_for 是一个用于生成 URL 的装饰器,接受函数名作为为第一个参数,返回的是该函数对应的装饰器的路径,主要是配合redirect()函数的使用

from flask import Flask, escape, url_forapp = Flask(__name__)@app.route('/')
def index():return 'index'@app.route('/login')
def login():return 'login'@app.route('/user/<username>')
def profile(username):return '{}\'s profile'.format(escape(username))# url_for可以规定这些函数的url地址
with app.test_request_context():print(url_for('index'))    #输出/print(url_for('login'))    #输出/loginprint(url_for('login', next='/'))   #输出/login?next=%2Fprint(url_for('profile', username='John Doe'))  # 输出/user/John%20Doe

redirect_to

redirect_to 是重定向装饰器。当用户点击路由跳转链接时,浏览器会发送一个 HTTP 重定向请求,Flask 路由装饰器 redirect_to 可以捕获这个重定向请求,并将用户重定向到目标 URL。

应用 redirect_to 装饰器的重点,就是了解它需要接收一个参数,这个参数就是重定向后要跳转到的目标 URL,会直接跳到这个重定向后的URL

通常配合url_for使用,因为url_for会返回一个URL,而redirect_to需要传的就是一个URL路径

request对象

request 是一个非常有用的对象,它包含了客户端与服务器之间的所有请求和响应数据。

在 Flask 中,视图函数的 request 对象通常是由客户端发送给服务器的第一个请求对象,它包含了客户端发送给服务器的所有数据,比如后面这些信息。

  1. 请求头信息:如 Accept、Content-Type 等
  2. 请求的 URL 参数 request.url
  3. 发送给服务器的请求体数据 request.json
  4. 请求方法 request.method
  5. 表单数据,即 POST 请求中传递的数据 request.form

案例实战

  • get 输入到URL内,按下回车,request相当于是URL内的东西,客户端会从URL内得到request,所以是服务器到客户端
  • post,我们在框内输入,按下回车,相当于客户端发往服务器了,request是从客户端发往服务器的请求
from flask import Flask, render_template, request, redirect, url_forapp = Flask(__name__)@app.route('/')
def index():return render_template('practice_2_index.html')@app.route('/<code>', methods=['GET'])
def check_(code):Cipher = '路由装饰器'if request.method == 'GET' and code == Cipher:return '使用GET方法,口令正确'else:return redirect(url_for('failure'))@app.route('/check', methods=['POST'])
def check():Cipher = '路由装饰器'ci = request.form.get('cipher')if request.method == 'POST' and ci == Cipher:return redirect(url_for('success'))else:return redirect(url_for('failure'))@app.route('/success')
def success():return '暗号对接成功!'def failure():return '暗号对接失败!'if __name__ == '__main__':app.run()

更多推荐

「Flask」路由+视图函数

本文发布于:2023-11-15 04:17:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1593517.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:视图   路由   函数   Flask

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!