我想重现在使用基于Flask类的视图时将多个URL链接到一个端点的行为。 使用经典的Flask视图我会这样做:
@app.route("/users")
@app.route("/users/<int:id>", defaults={"id": None})
def users(id):
# Function
但是如何使用app.add_url_rule使用基于类的视图重现此行为?
答案 0 :(得分:1)
通常,在您定义基于班级的视图后,只需add_url_rule
每条路线的规则,并采用Flask's Docs中提到的示例:
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
然后您可以将路线添加为:
user_view = UserAPI.as_view('user_api')
app.add_url_rule('/users/', defaults={'user_id': None},
view_func=user_view, methods=['GET',])
app.add_url_rule('/users/', view_func=user_view, methods=['POST',])
app.add_url_rule('/users/<int:user_id>', view_func=user_view,
methods=['GET', 'PUT', 'DELETE'])