aiohttp中基于类的详细视图

时间:2018-04-23 10:06:10

标签: python-3.6 aiohttp

我试图在aiohttp中创建一个基于类的视图。我跟随doc。一切顺利但我无法找到详细观点的方法。

from aiohttp import web


class MyView(web.View):

    async def get(self):
        resp = await get_response(self.request)
        return resp

    async def post(self):
        resp = await post_response(self.request)
        return resp

    app.router.add_view('/view', MyView)

此代码将生成两个端点:

POST /view
GET /view

但是如何使用基于类的视图添加GET /view/:pk:?我知道我可以手动创建它,添加到没有基于类的视图的路由器,但我在这里寻找一种方法来使用它。

UPD: 目标是生成像

这样的URL
"""
POST /view      # creation
GET /view       # a full list
GET /view/:id:  # detailed view

"""



from aiohttp import web


class MyView(web.View):

    async def get(self):
        resp = await get_response(self.request)
        return resp

    async def post(self):
        resp = await post_response(self.request)
        return resp

    async def detailed_get(self):
        resp = await post_response(self.request)
        return resp


    app.router.add_view('/view', MyView)

或至少获取以下网址:

POST /view     # creation
GET /view/:id: # detailed view

1 个答案:

答案 0 :(得分:0)

要在基于类的视图上创建其他行为,请向View添加路由装饰器。


from aiohttp import web

routes = web.RouteTableDef()


@routes.view('/ert/{name}')
@routes.view('/ert/')
class MyView(web.View):

    async def get(self):
        return web.Response(text='Get method')

    async def post(self):
        return web.Response(text='Post method')