Comments 7
Оригинально. Вообще, аннотациям я пока не нашел особенно применения (аннотирую типы аргументов и функций), так что интересно видеть такие юзкейсы.
Во Фласке, наверно, пригодится.
Во Фласке, наверно, пригодится.
В других фреймворках такая проблема необязательно есть
В ЧерриПае аргументы парсятся автоматически (вроде, даже типы приводятся). Т.е., там ваш ugly_calc будет совсем не такой ugly :-)
В ЧерриПае аргументы парсятся автоматически (вроде, даже типы приводятся). Т.е., там ваш ugly_calc будет совсем не такой ugly :-)
Во фласке тоже с использованием конверторов.
Path variables, ты имеешь в виду? Да, но их использование не всегда возможно. Особенно если речь идёт о POST-запросах, которые по конвенции HTTP не должны передавать данные в URL.
Кстати, эта штука совместима с path variables. Проверил так:
Кстати, эта штука совместима с path variables. Проверил так:
@app.route('/calc/<int:x>/')
def pathed_calc(x, y:Arg(int), op:Arg(str, default='+')):
return str(OPERATION[op](x, y))
Прошу прощения, не сразу понял, что насчет более консерватиного WTForms?
WTForms вынуждает тебя описывать форму отдельной сущностью (отдельным классом), что не очень-то способствует читабельности и компактности кода. Кроме того, если речь идёт о REST-интерфейсе (для которого я это изначально и пилил), то WTForms тебе не помощник.
Когда-то юзал wtforms для rest, всего-то написать обёртку для дампа ошибок в json, а валидаторы прекрасно себе работают. Потом появился schematics: github.com/j2labs/schematics
Питоновские декораторы обзывают аннотациями, потому что @-синтаксис, например, в Java и PHP используется для механизма «аннотаций» (которые не имеют ничего общего ни с декораторами питона, ни его же аннотациями, хотя выглядит очень похоже). Как раз «at» (значок и идентификатор перед объявлением функции) и путает людей.
Sign up to leave a comment.
Один вариант использования аннотаций