我来自Rails背景,我发现我的烧瓶路线很快变得非常混乱。看起来flask鼓励您将所有控制器逻辑放入路径/应用程序定义中。
而不是
resources :users
并将实现抛给users_controller.py
我明白了
@app.route("/users"), methods=["GET"]
def list_users():
return ..
@app.route("/users/new"), methods=["GET"]
def new_user():
return render_template("new")
@app.route("/users"), methods=["POST"]
def create_user()
....
然后添加另外4个动作。这真的需要吗?
我试过蓝图,似乎与Rails引擎相比,但它不是我正在寻找的那种分区。我如何制作关于我的路线的路线,而不是关于它们的实施?我真的要升级到Django吗?
把它放在一个不同的,也许更清晰的方式:我想从我的app.py
文件中的方法。我想要比route()
更高的抽象来定义CRUD资源。就像是
app.resources("users", controller=UsersController)
或者更好的是,让Flask根据资源名称解析控制器。
UsersController将看起来像这样
class UsersController:
def index():
pass
def show(user_id):
pass
def new():
pass
def create():
pass
def edit(user_id):
pass
def update():
pass
def delete():
pass
你在寻找这个吗? flask.pocoo.org/docs/1.0/views涵盖了可插入视图,请查看extending MethodView
的最后一部分。
class UserAPI(MethodView):
def get(self, user_id):
if user_id is None:
# return a list of users
pass
else:
# expose a single user
pass
def post(self):
# create a new user
pass
def delete(self, user_id):
# delete a single user
pass
def put(self, user_id):
# update a single user
pass
请注意,在Flask中,CRUD视图的实现并不是开箱即用的,因为它的设计试图使其不受影响和灵活。