gpt4 book ai didi

python - flask-Python 中的多重路由

转载 作者:行者123 更新时间:2023-11-28 20:35:38 33 4
gpt4 key购买 nike

我是 Flask - Python 的初学者。我正面临多个路由的问题。我已经通过谷歌搜索了。但是没有完全了解如何实现它。我开发了一个 flask 应用程序,我需要为不同的 url 重用相同的 View 函数。

@app.route('/test/contr',methods=["POST", "GET"],contr=None)
@app.route('/test/primary', methods=["POST", "GET"])
def test(contr):
if request.method == "POST":
if contr is None:
print "inter"
else:
main_title = "POST PHASE"
...

我想为 2 个路由调用测试功能..& 在一些功能上有所不同,除了所有其他功能都是相同的。所以我想重用。但是不知道如何使用从将调用重定向到此测试函数的函数传递的一些参数来区分测试函数内部的路由。

我找不到从头开始定义多路由基础知识的好教程

最佳答案

有几种方法可以用路由来处理这个问题。

您可以深入研究 request对象以了解哪个规则触发了对 View 函数的调用。

  • request.url_rule会给你提供的规则@app.route 的第一个参数装饰器,逐字。这会包括由 <variable> 指定的路由的任何可变部分.
  • 使用request.endpoint默认为 View 的名称函数,但是,它可以使用 endpoint 显式设置@app.route 的参数.我更喜欢这个,因为它可以很短字符串而不是完整的规则字符串,您可以更改规则而无需更新 View 函数。

这是一个例子:

from flask import Flask, request

app = Flask(__name__)

@app.route('/test/contr/', endpoint='contr', methods=["POST", "GET"])
@app.route('/test/primary/', endpoint='primary', methods=["POST", "GET"])
def test():
if request.endpoint == 'contr':
msg = 'View function test() called from "contr" route'
elif request.endpoint == 'primary':
msg = 'View function test() called from "primary" route'
else:
msg = 'View function test() called unexpectedly'

return msg

app.run()

另一种方法是传递 defaults字典 @app.route .字典将作为关键字参数传递给 View 函数:

@app.route('/test/contr/', default={'route': 'contr'}, methods=["POST", "GET"])
@app.route('/test/primary/', default={'route': 'primary'}, methods=["POST", "GET"])

def test(**kwargs):
return 'View function test() called with route {}'.format(kwargs.get('route'))

关于python - flask-Python 中的多重路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46501905/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com