Как я понимаю, "паттерн матчер" это что-то типа switch/case (например, у PHP или Bash). Как по мне, то это немного для других целей, не для валидации.
Но! Если вы что-то можете сделать быстро средствами самого Python, то я рекомендую не прибегать к использованию библиотек, гораздо быстрее решить простые задачи локальными средствами. А уже если вам надо произвести сложную задачу, то чтобы "не изобретать велосипед", я рекомендую использовать дополнительные библиотеки. В моём комментарии выше, есть пример, где входящее значение должно пройти 5 правил и это только для username, а надо проверить еще пароль, email, имя, фамилию, т.п. В таком случае лучше использовать универсальное решение.
Что касается преобразования или сериализации, это важная тема, выходящая за рамки данной библиотеки статьи, возможно, тут пригодится attrs.
A так же соглашусь, что библиотек, которые способны валидировать данные много, но не все ориентированы на конечного пользователя (обычного пользователя). Например, не всем может быть понятна надпись:
# стандартное сообщение об ошибке в attrs, при проверке на тип int:
"'x' must be <class 'int'> (got '128' that is a <class 'str'>).", Attribute(name='x', default=NOTHING, validator=[<instance_of validator for type <class 'int'>>, <function fits_byte at 0x10fd7a0d0>], repr=True, cmp=True, hash=True, init=True, metadata=mappingproxy({}), type=int, converter=None, kw_only=False), <class 'int'>, '128'
Гораздо понятнее будет:
# стандартное сообщение в respect_validation
"128" must be of type integer
Все зависит от поставленных задач, а так же удобства использования при разработке.
# Я думаю, быстрее и практичнее сделать так:
if isinstance(var, str):
Конечно же, если вам надо проверить только тип данных, то вам не надо использовать сторонние библиотеки, а пользоваться встроенными функциями. Данная библиотека нужна для проверки многих параметров. Например, username должен быть:
Тип str (if not isinstance(var, str): # return error)
Длинна от 4 до 64 включительно(if not 4 <= len(var) <= 64: # return error)
Не содержать пробелы (if ' ' in var: # return error)
Содержать только латинские буквы или цифры (if not var.isalnum(): # return error)
Не быть равным admin или root (if var in ['admin', 'root']: # return error)
Как вы можете заметить задача усложнилась. Кроме того, что вам надо написать много if, вам так же надо продумать сообщения, которые надо отправить пользователю. Вот здесь может пригодиться библиотека валидации. :)
Я вычитал, что некоторые Huawei коммутаторы поддерживаются и настройка tacacs сервера аналогична Cisco, а вот настройка самих девайсов отличается, нужно читать мануал. У меня под рукой такого нет, так что если будут примеры конфигурации, буду им рад.
Ну что тут сказать, оптимизации проекта предела нет. Скорее всего запросы идут в течении нескольких секунд, в данный выполняется много задач — проходит аутентификация, пишется лог в файл, в базу, это нагружает процессор. Я вернусь к этому вопросу, если у меня найдутся средства для тестов :)
Согласен с вами, почитал о NCM, выглядит не плохо. Я постараюсь интегрировать Oxidized (не в ближайшем будущем), это что-то подобное, только бесплатно.
Добрый день. После Нового года появятся больше фитч. Очень рад, что вам понравилось.
Прочитал комментарий. Я понимаю его насторожённость. Я подумываю о платной поддержке, может это как-то исправит мнение о «левой» ova)) (в следующем году буду пробовать вкручивать oxidized)
Чтобы установить новые библиотеки нужна переустановка. Сама база остается не тронутой. Но! Между этими версиями был переделаны MAVIS модули, если вы используете LDAP настройки надо заново проверить и применить. (бесшовно не получилось, извините)
Спасибо. Я только начал разбираться с «вебом», и этот сайт является практикой в CSS и JavaScript, а так же хотел потестировать bootstrap 4. Я обязательно посмотрю что такое Moodle.
Как я понимаю, "паттерн матчер" это что-то типа switch/case (например, у PHP или Bash). Как по мне, то это немного для других целей, не для валидации.
Но! Если вы что-то можете сделать быстро средствами самого Python, то я рекомендую не прибегать к использованию библиотек, гораздо быстрее решить простые задачи локальными средствами. А уже если вам надо произвести сложную задачу, то чтобы "не изобретать велосипед", я рекомендую использовать дополнительные библиотеки. В моём комментарии выше, есть пример, где входящее значение должно пройти 5 правил и это только для username, а надо проверить еще пароль, email, имя, фамилию, т.п. В таком случае лучше использовать универсальное решение.
Что касается преобразования или сериализации, это важная тема, выходящая за рамки данной библиотеки статьи, возможно, тут пригодится attrs.
A так же соглашусь, что библиотек, которые способны валидировать данные много, но не все ориентированы на конечного пользователя (обычного пользователя). Например, не всем может быть понятна надпись:
Гораздо понятнее будет:
Все зависит от поставленных задач, а так же удобства использования при разработке.
Конечно же, если вам надо проверить только тип данных, то вам не надо использовать сторонние библиотеки, а пользоваться встроенными функциями. Данная библиотека нужна для проверки многих параметров. Например, username должен быть:
Тип str (
if not isinstance(var, str): # return error
)Длинна от 4 до 64 включительно(
if not 4 <= len(var) <= 64: # return error
)Не содержать пробелы (
if ' ' in var: # return error
)Содержать только латинские буквы или цифры (
if not var.isalnum(): # return error
)Не быть равным admin или root (
if var in ['admin', 'root']: # return error
)Как вы можете заметить задача усложнилась. Кроме того, что вам надо написать много
if
, вам так же надо продумать сообщения, которые надо отправить пользователю. Вот здесь может пригодиться библиотека валидации. :)Добрый день! Administration -> Update. Требуется подключение к интернету.
Ну что тут сказать, оптимизации проекта предела нет. Скорее всего запросы идут в течении нескольких секунд, в данный выполняется много задач — проходит аутентификация, пишется лог в файл, в базу, это нагружает процессор. Я вернусь к этому вопросу, если у меня найдутся средства для тестов :)
Согласен с вами, почитал о NCM, выглядит не плохо. Я постараюсь интегрировать Oxidized (не в ближайшем будущем), это что-то подобное, только бесплатно.
С Уважением, Алексей
Прочитал комментарий. Я понимаю его насторожённость. Я подумываю о платной поддержке, может это как-то исправит мнение о «левой» ova)) (в следующем году буду пробовать вкручивать oxidized)
Чтобы установить новые библиотеки нужна переустановка. Сама база остается не тронутой. Но! Между этими версиями был переделаны MAVIS модули, если вы используете LDAP настройки надо заново проверить и применить. (бесшовно не получилось, извините)
С Уважением, Алексей
Спасибо, очень приятно слышать, что вам понравилось. Как я понял, вы пользуетесь новой версией моего проекта. Я напишу о нем отдельную статью.
Очень уважаю Одома и, при каждом удобном случае, советую почитать его книги.