Size: a a a

Django [ru] #STAY HOME

2020 May 22

MB

Muslim Beibytuly in Django [ru] #STAY HOME
Nikolay Cherniy
я могу представить теоритически ситуацию что тебе может вернуться None или False и нужно по разному отреагировать, поэтому такая конструкция имеет право на жизнь, но во всех реальных ситуациях тебе неважно None, False или пустая строка, тем более что после self.request.query_params.get('content', None) даже False тебе уже придет как None
Не придёт же, если передать False
источник

MB

Muslim Beibytuly in Django [ru] #STAY HOME
Лучше вообще не оставлять никаких исключений, только is None для Optional[Any]
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Alex Dem
пустая строка, массив и словарь тоже матчатся if not object
я в курсе, не стал просто перечислять все варианты 😉
источник

MB

Muslim Beibytuly in Django [ru] #STAY HOME
Консистентность - залог читаемого кода
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Muslim Beibytuly
Не придёт же, если передать False
еще раз self.request.query_params.get('content', None) если content = False вернет None
источник

AD

Alex Dem in Django [ru] #STAY HOME
Nikolay Cherniy
я в курсе, не стал просто перечислять все варианты 😉
я к тому, что при iexact None и пустая строка должны отдавать разный результат :)
источник

AD

Alex Dem in Django [ru] #STAY HOME
если я врубился в контекст правильно
при None не должно быть фильтрации, при пустой строке надо брать "все подряд"
источник

AD

Alex Dem in Django [ru] #STAY HOME
self.request.query_params.get('content', None)
а вот это можно сократить до абсолютного эквивалента
self.request.query_params.get('content')

потому, что get и так вернет None если ключа нет
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Alex Dem
я к тому, что при iexact None и пустая строка должны отдавать разный результат :)
self.request.query_params.get('content', None) и при пустой строке вернет None, только вот зачем что-то сравнивать при пустой строке?
источник

AD

Alex Dem in Django [ru] #STAY HOME
Nikolay Cherniy
self.request.query_params.get('content', None) и при пустой строке вернет None, только вот зачем что-то сравнивать при пустой строке?
тут могу заблуждаться, не помню :(
источник

AD

Alex Dem in Django [ru] #STAY HOME
если ключ указан, но значение не указано, джанго впишет пустую строку или уберет ключ?
источник

AD

Alex Dem in Django [ru] #STAY HOME
в контексте дискуссии это важно :)
источник

MB

Muslim Beibytuly in Django [ru] #STAY HOME
Nikolay Cherniy
self.request.query_params.get('content', None) и при пустой строке вернет None, только вот зачем что-то сравнивать при пустой строке?
Sure? Надо проверить
источник

MB

Muslim Beibytuly in Django [ru] #STAY HOME
BooleanFilter в этом случае не работал бы вообще
источник

AD

Alex Dem in Django [ru] #STAY HOME
GET .. /?foo=
request.query_params: <QueryDict: {'foo': ['']}>
источник

AD

Alex Dem in Django [ru] #STAY HOME
Поэтому проверка is None релевантна
источник

MB

Muslim Beibytuly in Django [ru] #STAY HOME
Nikolay Cherniy
self.request.query_params.get('content', None) и при пустой строке вернет None, только вот зачем что-то сравнивать при пустой строке?
Good test, нельзя так проверять, is not None
источник

AD

Alex Dem in Django [ru] #STAY HOME
Мы практикуем античные методы познания, что-то вроде майевтики
забавно :)
источник

MB

Muslim Beibytuly in Django [ru] #STAY HOME
Alex Dem
GET .. /?foo=
request.query_params: <QueryDict: {'foo': ['']}>
Все равно за такие проверки бил бы по рукам:D
источник

MB

Muslim Beibytuly in Django [ru] #STAY HOME
Django filters уже сделали все что надо
источник