[英]Multiple functions on class-based views flask
也許我誤解了 Flask 的基於類的觀點。 我來自 PHP/Laravel 背景。 在 Laravel 上,我可以定義一個控制器類,我可以在其中響應不同的 json 數據、視圖(Flask 上的模板)等。所以我唯一要做的就是定義一個路由並將該路由關聯到控制器類上的特定方法。
像這樣的偽代碼:
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()...
所以谷歌搜索一下,有基於類的視圖,但正如我所看到的,在定義一個函數的過程中,我定義了一個類,並將舊視圖函數的內容放在dispatch_request基於類的視圖方法中。
class DoPostClass(View):
dispatch_request()
...
class DoGetClass(View):
dispatch_request()
...
class DoSomeOtherGetClass(View):
dispatch_request()
...
有沒有辦法將這些函數放在一個類中? 我是不是誤解了 Flask 的基於類的視圖? 我知道有一個 MethodView 類具有 get、post、put、delete 方法,但由於我沒有創建 RESTful API,也沒有使用漂亮的 RESTful url,MethodView 類似乎對我的情況沒有用。
提前致謝。
根據我的 laravel/flask 項目經驗,控制器/視圖的經典代碼是相同的。 您可以嘗試flask-classy擴展
下面是一個基於flask-classy
的例子。
目錄
.
├── index.py
└── views
├── __init__.py
└── myView.py
我的視圖.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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.