gpt4 book ai didi

python - 基于类的 View flask 上的多个功能

转载 作者:太空宇宙 更新时间:2023-11-04 05:22:16 25 4
gpt4 key购买 nike

也许我误解了关于 Flask 的基于类的观点。我来自 PHP/Laravel 背景。在 Laravel 上,我可以定义一个 Controller 类,我可以在其中响应不同的 json 数据、 View (Flask 上的模板)等。所以我唯一要做的就是定义一个路由并将该路由关联到 Controller 类上的特定方法。

像这样的伪代码:

On POST associate /path to MyControllerClass@doPostMethod
On GET associate /path to MyControllerClass@someGetMethod
On GET associate /path/extra to MyControllerClass@someOtherGetMethod
...

在 Flask 上,我会将它们作为单独的函数。像这样的东西:

def doPostFunction()...
def someGetFunction()...
def someOtherGetFunction()...

所以用谷歌搜索了一下,有基于类的 View ,但正如我所见,我没有定义一个函数,而是定义了一个类,并将旧 View 函数的内容放在 dispatch_request class-based View 的方法。

class DoPostClass(View):
dispatch_request()
...

class DoGetClass(View):
dispatch_request()
...

class DoSomeOtherGetClass(View):
dispatch_request()
...

有没有办法将这些函数放在一个类中?我是不是误解了 Flask 基于类的观点?我知道有一个 MethodView 类具有 get、post、put、delete 方法,但由于我没有创建 RESTful API,我也没有使用 nice-RESTful url,MethodView 类似乎对我的情况没有用。

提前致谢。

最佳答案

根据我的 laravel/flask 项目经验, Controller / View 的经典代码是相同的。你可以试试flask-classy扩展名

下面是一个基于flask-classy的例子。

目录

.
├── index.py
└── views
├── __init__.py
└── myView.py

myView.py

from flask_classy import FlaskView

class myView(FlaskView):
def index(self):
return "this is index"

def get(self, id):
return "this is page " + str(id)

索引.py

from flask import Flask
from views.myView import myView

app = Flask(__name__)
myView.register(app)

运行

$ export FLASK_APP=index.py
$ flask run
# Index: http://127.0.0.1:5000/my
# Get: http://127.0.0.1:5000/my/<id>

关于python - 基于类的 View flask 上的多个功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39858256/

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