Использование OR в операторе if для проверки наличия одного из параметров запроса
Я хочу реализовать простой фильтр с использованием одного параметра запроса (например, age=gt:40
, name=eq:bob
). Меня интересует, можно ли проверить, присутствует ли в GET-запросе сразу name
или age
? Пример может прояснить, что мне нужно:
if ('age' or 'name') in request.GET:
Это будет соответствовать только при использовании первого параметра. Когда я попадаю в конечную точку с параметром запроса name
, он не соответствует true.
Я знаю, что могу сделать что-то вроде:
if ('age' in request.GET) or ('name' in request.GET) :
но это может довольно быстро вырасти и стать уродливым.
Вы можете использовать any(…)
[Python-doc]:
if any(x in request.GET for x in ('age', 'name')):
# …
pass
Другой вариант - использовать set intersection:
if {'age', 'name'}.intersection(request.GET)
...
Это немного менее эффективно, чем any
(нет ранней остановки), но, IMO, более читаемо