Comments 11
Новый учебник написан в 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* подобных системах — нет.
{% 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 в данном случае?
Я не могу пояснить. У меня все работает python3.5 win7 Набирал все сам. Сравни с исходниками Мигеля. Обрати внимание на структуру каталогов и расположение файлов.
В jinja есть возможность включать содержимое других файлов в указанное место, это делается методом
{% include 'file.html' %} взял здесь
Суть в том, что все что у тебя расположено до {% extends «base.html» %} может оказывать влияние даже пробелы. Могу предположить что виновата кодировка файла. Если это utf-8 with BOM
form action="" method=«post»
В таком случаи резудбтат не такой как на картинке.
Если вернуть как было:
form action="" method=«post» novalidate
Тогда всё получается как на картинке.
Спасибо.
Мега-Учебник Flask, Часть 3: Веб-формы (издание 2018)