基于类的视图只是实现对请求的响应行为的类。它们提供了一种在同一路由节点处分别处理不同HTTP请求类型的方法。不是为每个路由节点支持的请求类型定义和装饰三个不同的处理函数,而是为路由节点分配基于类的视图。这非常类似于Tornado的类视图。
定义视图
基于类的视图应该继承自
HTTPMethodView
。然后就可以为每个 HTTP 请求类型实现类方法。如果收到的请求没有对应的方法,就会产生一个
405: Method not allowed
的响应。
为了注册一个类视图到一个路由节点,可以使用
app.add_route
方法。它的第一个参数应该是定义的类对
as_view
方法的调用,第二个应该是URL节点。
可用的方法是get,post,put,patch和delete。 使用所有这些方法的类看起来如下所示:
from sanic import Sanic
from sanic.views import HTTPMethodView
from sanic.response import text
app = Sanic('some_name')
class SimpleView(HTTPMethodView):
def get(self, request):
return text('I am get me