基于 Flask 类的视图 - 多态性

Pyt*_*ast 4 python polymorphism flask django-class-based-views

我有一个基于类的视图如下:-

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'))
Run Code Online (Sandbox Code Playgroud)

当我点击/movie/pk/端点时,它说, TypeError: get() got an unexpected keyword argument 'pk'。根据多态性概念,它应该自动检测要路由的函数。

为什么会这样?另外,我怎样才能实现相同的功能,即不创建另一个类,我该怎么做?

Ber*_*ard 5

Python 不支持方法/函数重载。您只能定义一种get方法并为可选参数提供默认值:

class MoviesList(MethodView):

    def get(self, pk=None):
        if pk is None:
            return 'MoviesList'
        return pk
Run Code Online (Sandbox Code Playgroud)