类flask.views.MethodView继承了什么?

时间:2014-06-24 18:13:09

标签: python flask

为什么我们在课堂上传递flask.views.MethodView

app.add_url_rule>在这个片段中,add_url_rule这是预定义的属性吗?

同样view_funcView.as_view>他们预定义了吗?

import flask, flask.views
app = flask.Flask(__name__)

class View(flask.views.MethodView):
    def get(self):
        return "Hello World!"

app.add_url_rule('/',view_func=View.as_view('main'))

app.debug = True
app.run()

1 个答案:

答案 0 :(得分:4)

Viewflask.views.MethodView class子类。后者提供基本功能,如as_view() method

  

将类转换为可与路由系统一起使用的实际视图函数。在内部,它会动态生成一个函数,它将在每个请求上实例化View并在其上调用dispatch_request()方法。

另见Pluggable Views

由于这不是基于 function 的视图,因此您无法在其上使用@app.route()装饰器。在这种情况下,您可以使用替代app.add_url_rule() method

  

连接网址规则。与route()装饰器完全一样。如果提供view_func,则会向端点注册。

view_func是此方法的文档关键字参数;当请求注册的路径时(在您的示例中为/),然后Flask调用返回的as_view()。反过来调用dispatch_request(),如果HTTP请求使用GET方法,则会调用View().get()方法