Pull to refresh

Comments 11

Большое спасибо, как раз недавно начал учить Python и Flask по этому циклу статей
Я бы не сказал, что первый перевод утратил свою актуальность. Названия типов полей в формах те же. Вызов такой же. Рендеринг в шаблоне тот же. В чём новизна? wtforms не изменился.

Новый учебник написан в 2017 году, и, наконец, он выглядит так, как если бы он был настроен на версию Python 3. Решены проблемы с совместимостью, изменен фокус в сторону Python 3, а не Python 2 как было в 2012 году в прежней версии учебника.


К сожалению, Python 2 или 3 — это не единственное, что изменилось. Есть также несколько технологий, которые имели смысл в 2012 году, но теперь устарели. К ним относятся:


  • Механизм аутентификации OpenID, который потерял поддержку среди поставщиков.
  • Пакет sqlalchemy-migrate для миграции баз данных, который, похоже, потерял поддержку и поддержку сообщества. В эти дни Alembic — намного лучший выбор для миграции чем SQLAlchemy.
  • Интерфейс командной строки Flask (Flask Shell), который не существовал в то время.
  • В то время, когда Мигель начал работать над учебником, Flask blueprints были довольно новыми, поэтому он решил не использовать эту функцию. В 2017 году blueprints являются обязательными для применения в Flask.
  • Bootstrap 2 для стилизации и форматирования веб-страниц, теперь имеет две основными версии. Новые версии Bootstrap не имеют обратной совместимости с версией 2.
  • Изменения в сервисе Heroku, которые делают инструкции по развертыванию в учебнике устарели.

Многие вещи, которые изменились за эти пять лет, в основном означают, что нужно пересмотреть все главы, причем большинство из них претерпели довольно важные изменения.


Сам Мигель считает, что вырос профессионально за эти пять лет, и думает, что сможет принести гораздо большую ценность этому учебнику с этим новым опытом. После выхода первого учебника он провел более дюжины конференций и выпустил кучу учебных пособий, написал очень успешную книгу разработки Flask для крупного издательства, создал несколько популярных проектов с открытым исходным кодом .


Кроме того, у Мигеля есть еще пять лет опыта работы в качестве блоггера, так как продолжал создавать контент для своего блога на протяжении всех этих лет. Весь этот опыт будет отражен в обновлениях, которые он приводит в учебнике.


Более подробно читайте в блоге Мигеля

Добавлю, что за перевод я взялся потому что застрял на 5-й главе старого учебника связанного с OpenID.


В части глав нового учебника структура плана сохранилась частично и может быть, где то, даже окажется, что полностью. Сам я не сравнивал, но я прочел и проделал первые 4 главы старого учебника. Примеры пришлось брать в блоге Мигеля поскольку в учебнике на Хабре примеры имеют старые ошибки и не работают.

Ошибки. Просьба поправить в тексте:


я собираюсь хранить в файле app/templates/Login.html

Заменить символ L в верхнем регистре на нижний регистр, иначе кто-то скопирует и будет мучиться, почему не работает. Возможно для Windows это будет работать, но в nix* подобных системах — нет.

У меня не заработал шаблон login.html

{% extends "base.html" %}

{% block content %}
Sign In
{{ form.hidden_tag() }}

{{ form.username.label }}<br>
{{ form.username(size=32) }}


{{ form.password.label }}<br>
{{ form.password(size=32) }}


{{ form.remember_me() }} {{ form.remember_me.label }}


{{ form.submit() }}






Долго не мог понять в чем дело. На экран выводилось все до формы.
Оказалось, что проблема была в extends. Заменил на include и все заработало.
Может кто-то пояснить в чем тут проблема? И в чем принципиальная разница использования extend в данном случае?
http://lectures.uralbash.ru/6.www.sync/2.codding/3.templates/jinja2.html#extends

Я не могу пояснить. У меня все работает python3.5 win7 Набирал все сам. Сравни с исходниками Мигеля. Обрати внимание на структуру каталогов и расположение файлов.

В jinja есть возможность включать содержимое других файлов в указанное место, это делается методом
{% include 'file.html' %} взял здесь
Посмотрел документацию по ключевым словам extends и include

Суть в том, что все что у тебя расположено до {% extends «base.html» %} может оказывать влияние даже пробелы. Могу предположить что виновата кодировка файла. Если это utf-8 with BOM
В главе «Повышение эффективности проверки полей» из HTML убрали novalidate:
form action="" method=«post»

В таком случаи резудбтат не такой как на картинке.
Если вернуть как было:
form action="" method=«post» novalidate

Тогда всё получается как на картинке.

Спасибо.
Sign up to leave a comment.

Articles