Flask Class 基于视图 - 多态性
Flask Class Based Views - Polymorphism
我有一个基于 class 的视图如下:-
class MoviesList(MethodView):
def get(self):
return 'MoviesList'
def get(self,pk):
return pk
movies.add_url_rule('/movies/', view_func=MoviesList.as_view('movies_by_title'))
movies.add_url_rule('/movie/<pk>/', view_func=MoviesList.as_view('movie_details_by_id'))
当我点击 /movie/pk/
端点时,它说,
TypeError: get() got an unexpected keyword argument 'pk'
。根据多态性概念,它应该自动检测路由哪个函数。
为什么会这样?另外,我怎样才能实现相同的功能,即不制作另一个class,我该怎么做?
Python 不支持 method/function 重载。您只能定义一个 get
方法并为可选参数提供默认值:
class MoviesList(MethodView):
def get(self, pk=None):
if pk is None:
return 'MoviesList'
return pk
我有一个基于 class 的视图如下:-
class MoviesList(MethodView):
def get(self):
return 'MoviesList'
def get(self,pk):
return pk
movies.add_url_rule('/movies/', view_func=MoviesList.as_view('movies_by_title'))
movies.add_url_rule('/movie/<pk>/', view_func=MoviesList.as_view('movie_details_by_id'))
当我点击 /movie/pk/
端点时,它说,
TypeError: get() got an unexpected keyword argument 'pk'
。根据多态性概念,它应该自动检测路由哪个函数。
为什么会这样?另外,我怎样才能实现相同的功能,即不制作另一个class,我该怎么做?
Python 不支持 method/function 重载。您只能定义一个 get
方法并为可选参数提供默认值:
class MoviesList(MethodView):
def get(self, pk=None):
if pk is None:
return 'MoviesList'
return pk