@Tiran_94
Python Django

Как написать динамический роут в aiohttp?

Есть роут вот такой

app.router.add_route('GET', '/list/{name}', list)
Как можно ним принимать значения ?page=2, если они передаются, а если нету то ?page= в url не появляется?
  • Вопрос задан
  • 780 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Прежде всего, название обработчика list перекроет конструктор списков. Не надо так делать.

Конкретно по вопросу:
async def get_list(request):
    page = request.GET.get('page', 1)
    ...

...
app.router.add_get('/list/{name}', get_list)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Astrohas
@Astrohas
Python/Django Developer
request.GET и request.rel_url.query в этих диктах хранятся
Ответ написан
Комментировать
fdhadzh
@fdhadzh
Perfectionist with deadlines
Если Вас правильно понял, то так должно работать:

from aiohttp import web


async def get_list(request):
    list_id = request.match_info['list_id']

    page = request.query.get('page', 1)

    text = 'List {} with page {}'.format(list_id, page)

    return web.Response(text=text)


app = web.Application()
app.router.add_get('/lists/{list_id}', get_list)

web.run_app(app)


1. aiohttp.web.BaseRequest.query
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы