Sanic框架基于类的视图用法示例

  

本文实例讲述了Sanic框架基于类的视图用法。分享给大家供大家参考,具体如下:

  

<强>

  

基于类的视图只是实现对请求响应行为的类,他们提供了一种在同一端点上划分不同HTTP请求类型的处理方式。不是定义和装饰三个不同的处理函数,而是为每个端点支持的请求类型分配一个处理函数,可以为端点分配一个基于类的视图。

  

  

基于类的视图应该是子类<代码> HTTPMethodView> HTTPMethodView> HTTPMethodView> 。   

要在端点上注册基于类的视图,除了需要定义一个类来继承<代码> HTTPMethodView> app.add_route() 方法来进行注册。可用的方法包括:<代码> ,<代码> ,<代码> ,<代码>补丁和<代码>删除>         从sanic进口sanic   从sanic。视图导入HTTPMethodView   从sanic。响应导入文本   类SanicView (HTTPMethodView):   def(自我,请求):   返回文本(“得到”)   def post(自我,请求):   返回文本(“文章”)   def(自我,请求):   返回文本(“放”)   def补丁(自我,要求):   返回文本(“补丁”)   def删除(自我,请求):   返回文本(“删除”)   应用=Sanic ()   app.add_route (SanicView.as_view (),“/method_view”)   if __name__==癬_main__”:   app.run ()      之前      

同样,你也可以是用<代码>异步代码语法:

        类SanicView (HTTPMethodView):   异步def(自我,请求):   返回文本(“得到”)   app.add_route (SanicView.as_view (),“/method_view”)      之前      

  

如果你需要URL参数,请将其包括在方法的定义中:

        类SanicView (HTTPMethodView):   异步def(自我,请求,名称):   返回文本(“这是获取和名字是{}”.format(名字))   app.add_route (SanicView.as_view (),“/& lt; name>”)      之前      

  

在之前的讲路由的文章《Sanic框架路由用法》中有提到,如果我们想在处理函数之前处理一些事情,我们可以使用装饰器。同样,在基于类的视图中同样可以使用装饰器来预处理一些事情。如果你想添加装饰器到类中,可以定义一个<代码> decorator> as_view() 方法时被应用:

        def装饰(函数):   异步def包装器(请求、* args * * kwargs):   打印(“有装饰器”)   响应=等待func(请求、* args * * kwargs)   返回响应   返回包装   类SanicView (HTTPMethodView):   decorator=(装饰)   异步def(自我,请求):   返回文本(“好的!”)   app.add_route (SanicView.as_view (),“/method_view”)      之前      

  

重定向功能在之前的路由文章《Sanic框架路由用法》中也有提到,如果你想在用户访问某个路由时,将其自动跳转至特定的路,由此时就可以使用重定向功能。同样,此功能在基于类的视图中同样能实现,只需要在<代码> url_for() 方法中将类名传递进来,而后调用<代码>重定向()方法:

        从sanic。响应输入重定向   @app.route(“/?   异步def回家(请求):   url=app.url_for (“SanicView”)   返回重定向(url)   类SanicView (HTTPMethodView):   异步def(自我,请求):   返回文本(“得到”)   app.add_route (SanicView.as_view (),“/method_view”)      之前      

  

CompositionView的简单使用在之前的文章《Sanic框架路由用法》当中也有简单提到。作为<代码> HTTPMethodVIew> CompositionView> CompositionView.add 方法添加到视图中:

        从sanic。视图导入CompositionView   异步def handle_get(请求):   返回文本(“得到”)   视图=CompositionView ()   view.add(“获得”,handle_get)   视图。add(“文章”、“把”,λ要求:文本(“这是POST或PUT”))   app.add_route(看来,“/composition_view”)      

Sanic框架基于类的视图用法示例