Class Based View Usage
Using HTTPMethodView to check parameters
When using HTTPMethodView , you can also use parse_params to check
parameters for each method.
from sanic.response import json
from sanic.views import HTTPMethodView
from sanic_dantic import parse_params, BaseModel, Field
class Person(BaseModel):
name: str = Field(description="name")
age: int = Field(description="age")
class MyView(HTTPMethodView):
@parse_params(query=Person)
async def get(self, request, params):
return json({"ctx": request.ctx.params, "params": params})
of course, parse_params can also be added to the decorators attribute.
from sanic.response import json
from sanic.views import HTTPMethodView
from sanic_dantic import parse_params, BaseModel, Field
class Person(BaseModel):
name: str = Field(description="name")
age: int = Field(description="age")
class MyView(HTTPMethodView):
decorators = [parse_params(query=Person, methods=["GET"])]
@staticmethod
async def get(request, params):
return json({"ctx": request.ctx.params, "params": params})
@staticmethod
async def post(request, params):
return json({"ctx": request.ctx.params, "params": params})
Using DanticView to check parameters
In addition to using the HTTPMethodView built into sanic , sanic-dantic also
provides DanticView , which inherits from HTTPMethodView and overrides the
dispatch_request method to support parameter checking.
When inheriting DanticView , you need to define the corresponding
{method}_model , such as get_model , etc.
from sanic.response import json
from sanic_dantic import DanticView, Field
class MyView(DanticView):
@staticmethod
async def get(request, params):
return json({"ctx": request.ctx.params, "params": params})
def get_model(self):
class Person:
name: str = Field(description="name")
age: int = Field(description="age")
return self.DanticModel(query=Person)