Python武器库开发-flask篇之URL重定向(二十三)

flask篇之URL重定向(二十三)

通过url_for()函数构造动态的URL:

我们在flask之中不仅仅是可以匹配静态的URL,还可以通过url_for()这个函数构造动态的URL

python 复制代码
from flask import Flask
from flask import url_for

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World!'

@app.route('/b')
def add():
    return "1+1=2"

@app.route('/user/<username>')
def user_index(username):
    return 'Hello {}'.format(username)
@app.route('/post/<int:post_id>')
def show_post(post_id):
    return 'Post {}'.format(post_id)
@app.route('/test')
def test():
    print(url_for('index'))
    print(url_for('user_index', username="Wang Gang"))
    print(url_for("show_post", post_id=1))
    return 'test'
if __name__ == '__main__':
    app.run(debug=True)

保存代码,然后我们去运行这个脚本

python 复制代码
python3 app.py

通过任意浏览器输入http://127.0.0.1:5000/test,获得相应的页面

此时相应的函数也被打印出来了

URL重定向:

现在我们来解读一下这段代码,首先我们定义了一个index()函数,作用是返回一个Hello World的界面

python 复制代码
#!/usr/bin/env python3

from flask import Flask
from flask import url_for
from flask import redirect

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World!'

@app.route('/<username>')
def hello(username):
    if username == 'handsome Wanggang':
        return 'Hello {}'.format(username)
    else:
    		#重定向到index这个函数
        return redirect(url_for("index"))
if __name__ == '__main__':
    app.run(debug=True)

然后我们定义了一个hello函数,在路由这块传入的参数如果是 handsome Wanggang,那么将返回相应的界面Hello handsome Wanggang,然如果传入的实参不是handsome Wanggang,而是其他的参数,那么将通过redirect这个函数和url_for()函数重定向到我们之前定义的index函数,输出 Hello World!

保存代码,然后我们去运行这个脚本

python 复制代码
python3 app.py

通过任意浏览器输入http://127.0.0.1:5000/handsome Wanggang,获得相应的页面

但是如果我们此时传入的参数是其他的参数,比如http://127.0.0.1:5000/Xiao Ming 或者是 http://127.0.0.1:5000/123 ,则URL将被重定向到index函数,输出Hello World!


相关推荐
一个无名的炼丹师8 分钟前
GraphRAG深度解析:从原理到实战,重塑RAG检索增强生成的未来
人工智能·python·rag
FL171713148 分钟前
MATLAB的Sensitivity Analyzer
开发语言·matlab
用户83562907805141 分钟前
用Python轻松管理Word页脚:批量处理与多节文档技巧
后端·python
lly20240642 分钟前
jEasyUI 设置排序指南
开发语言
进击的松鼠1 小时前
LangChain 实战 | 快速搭建 Python 开发环境
python·langchain·llm
一起努力啊~1 小时前
算法刷题--长度最小的子数组
开发语言·数据结构·算法·leetcode
小北方城市网1 小时前
第1课:架构设计核心认知|从0建立架构思维(架构系列入门课)
大数据·网络·数据结构·python·架构·数据库架构
还债大湿兄1 小时前
huggingface.co 下载有些要给权限的模型 小记录
开发语言·前端·javascript
我的offer在哪里1 小时前
Hugging Face:让大模型触手可及的魔法工厂
人工智能·python·语言模型·开源·ai编程
bkspiderx1 小时前
C++中的map容器:键值对的有序管理与高效检索
开发语言·c++·stl·map