Второе издание книги «Изучаем Python. Программирование игр, визуализация данных, веб-приложения»

    image Привет, Хаброжители! В том году мы делали обзор книги Эрика Мэтиза. На данный момент вышло новое издание с исправленными опечатками и листингами. Сама книга показывает базовые принципы программирования, знакомит со списками, словарями, классами и циклами, учит создавать программы и тестировать код. Во второй части книги вы начнете использовать знания на практике, работая над тремя крупными проектами: создадите собственную «стрелялку» с нарастающей сложностью уровней, займетесь работой с большими наборами данных и освоите их визуализацию и, наконец, создадите полноценное веб-приложение на базе Django, гарантирующее конфиденциальность пользовательской информации.

    Внутри отрывок из книги «Знакомство с Django»

    Знакомство с Django


    Современные веб-сайты в действительности представляют собой многофункциональные приложения, достаточно близкие к полноценным приложениям для настольных систем. Python содержит богатый набор инструментов для построения веб-приложений. В этой главе вы научитесь использовать Django для построения проекта Learning Log — сетевой журнальной системы для отслеживания информации, полученной вами по определенной теме.

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

    Django представляет собой веб-инфраструктуру — набор инструментов для построения интерактивных веб-сайтов. Django может реагировать на запросы страниц, упрощает чтение и запись информации в базы данных, управление пользователями и многие другие операции. В главах 19 и 20 мы доработаем проект Learning Log, а затем развернем его на сервере, чтобы вы (и ваши друзья) могли использовать их.

    Подготовка к созданию проекта
    В начале работы над проектом необходимо описать проект в спецификации. Затем вы создадите виртуальную среду для построения проекта.

    Написание спецификации
    В полной спецификации описываются цели проекта, его функциональность, а также внешний вид и интерфейс пользователя. Как и любой хороший проект или бизнес-план, спецификация должна сосредоточиться на самых важных аспектах и обеспечивать планомерную разработку проекта. Здесь мы не будем писать полную спецификацию, а сформулируем несколько четких целей, которые будут задавать направление процесса разработки. Вот как выглядит спецификация:

    Мы напишем веб-приложение с именем Learning Log, при помощи которого пользователь сможет вести журнал интересующих его тем и создавать записи в журнале во время изучения каждой темы. Домашняя страница Learning Log содержит описание сайта и приглашает пользователя зарегистрироваться либо ввести свои учетные данные. После успешного входа пользователь получает возможность создавать новые темы, добавлять новые записи, читать и редактировать существующие записи.

    Во время изучения нового материала бывает полезно вести журнал того, что вы узнали, — записи пригодятся для контроля и возвращения к необходимой информации. Хорошее приложение повышает эффективность этого процесса.

    Создание виртуальной среды
    Для работы с Django необходимо сначала создать виртуальную среду для работы. Виртуальная среда представляет собой подраздел системы, в котором вы можете устанавливать пакеты в изоляции от всех остальных пакетов Python. Отделение библиотек одного проекта от других проектов принесет пользу при развертывании Learning Log на сервере в главе 20.

    Создайте для проекта новый каталог с именем learning_log, перейдите в этот каталог в терминальном режиме и создайте виртуальную среду. Если вы работаете в Python 3, то сможете создать виртуальную среду следующей командой:

    learning_log$ python -m venv ll_env
    learning_log$

    Команда запускает модуль venv и использует его для создания виртуальной среды с именем ll_env. Если этот способ сработал, переходите к разделу «Активизация виртуальной среды» на с. 382. Если что-то не получилось, прочитайте следующий раздел — «Установка virtualenv».

    Установка virtualenv
    Если вы используете более раннюю версию Python или ваша система не настроена для правильного использования модуля venv, установите пакет virtualenv. Установка virtualenv выполняется следующей командой:

    $ pip install --user virtualenv

    Возможно, вам придется использовать слегка измененную версию этой команды. (Если вы еще не использовали pip, обратитесь к разделу «Установка пакетов Python с использованием pip» на с. 227.)

    ПРИМЕЧАНИЕ
    Если вы используете Linux, но и этот способ не сработал, установите virtualenv при помощи менеджера пакетов своей системы. Например, в Ubuntu для установки virtualenv используется команда sudo apt-get install python-virtualenv.

    Перейдите в каталог learning_log в терминальном окне и создайте виртуальную среду следующей командой:

    learning_log$ virtualenv ll_env
    New python executable in ll_env/bin/python
    Installing setuptools, pip...done.
    learning_log$

    Если в вашей системе установлено несколько версий Python, укажите версию, которая должна использоваться virtualenv. Например, команда virtualenv ll_env --python=python3 создаст виртуальную среду, которая использует Python 3.

    Активизация виртуальной среды
    После того как виртуальная среда будет создана, ее необходимо активизировать следующей командой:

         learning_log$ source ll_env/bin/activate
    (1) (ll_env)learning_log$

    Команда запускает сценарий activate из каталога ll_env/bin. Когда среда активизируется, ее имя выводится в круглых скобках (1); теперь вы можете устанавливать пакеты в среде и использовать те пакеты, что были установлены ранее. Пакеты, установленные в ll_env, будут доступны только в то время, пока среда остается активной.

    ПРИМЕЧАНИЕ
    Если вы работаете в системе Windows, используйте команду ll_env\Scripts\activate (без слова source) для активизации виртуальной среды.
    Чтобы завершить использование виртуальной среды, введите команду deactivate:

    (ll_env)learning_log$ deactivate
    learning_log$

    Среда также становится неактивной при закрытии терминального окна, в котором она работает.

    Установка Django
    После того как вы создали свою виртуальную среду и активизировали ее, установите Django:

    (ll_env)learning_log$ pip install Django
    Installing collected packages: Django
    Successfully installed Django
    Cleaning up...
    (ll_env)learning_log$

    Так как вы работаете в виртуальной среде, эта команда выглядит одинаково во всех системах. Использовать флаг --user не нужно, как и использовать более длинные команды вида python -m pip install имя_пакета.

    Помните, что с Django можно работать только в то время, пока среда остается активной.

    Создание проекта в Django
    Не выходя из активной виртуальной среды (пока ll_env выводится в круглых скобках), введите следующие команды для создания нового проекта:

    (1) (ll_env)learning_log$ django-admin.py startproject learning_log .
    (2) (ll_env)learning_log$ ls
    learning_log ll_env manage.py
    (3) (ll_env)learning_log$ ls learning_log
    __init__.py settings.py urls.py wsgi.py

    Команда (1) приказывает Django создать новый проект с именем learning_log. Точка в конце команды создает новый проект со структурой каталогов, которая упрощает развертывание приложения на сервере после завершения разработки.

    ПРИМЕЧАНИЕ
    Не забывайте про точку, иначе у вас могут возникнуть проблемы с конфигурацией при развертывании приложения. А если вы все же забыли, удалите созданные файлы и папки (кроме ll_env) и снова выполните команду.

    Команда ls (dir в Windows) (2) показывает, что Django создает новый каталог с именем learning_log. Также создается файл manage.py — короткая программа, которая получает команды и передает их соответствующей части Django для выполнения. Мы используем эти команды для управления такими задачами, как работа с базами данных и запуск серверов.

    В каталоге learning_log находятся четыре файла (3), важнейшими из которых являются файлы settings.py, urls.py и wsgi.py. Файл settings.py определяет то, как Django взаимодействует с вашей системой и управляет вашим проектом. Мы изменим некоторые из существующих настроек и добавим несколько новых настроек в ходе разработки проекта. Файл urls.py сообщает Django, какие страницы следует строить в ответ на запросы браузера. Файл wsgi.py помогает Django предоставлять созданные файлы (имя файла является сокращением от «Web Server Gateway Interface»).

    Создание базы данных
       (ll_env)learning_log$ python manage.py migrate
    (1)Operations to perform:
         Synchronize unmigrated apps: messages, staticfiles
         Apply all migrations: contenttypes, sessions, auth, admin
         ...
         Applying sessions.0001_initial... OK
    (2)(ll_env)learning_log$ ls
        db.sqlite3 learning_log ll_env manage.py

    Каждое изменение базы данных называется миграцией. Первое выполнение команды migrate приказывает Django проверить, что база данных соответствует текущему состоянию проекта. Когда мы впервые выполняем эту команду в новом проекте с использованием SQLite (вскоре мы расскажем о SQLite более подробно), Django создает новую базу данных за нас. В точке (1) Django сообщает о создании таблиц базы данных, необходимых для хранения информации, используемой в проекте (Synchronize unmigrated apps), а затем проверяет, что структура базы данных соответствует текущему коду (Apply all migrations).

    Выполнение команды ls показывает, что Django создает другой файл с именем db.sqlite3 (2). SQLite — база данных, работающая с одним файлом; она идеально подходит для написания простых приложений, потому что вам не нужно особенно следить за управлением базой данных.

    Просмотр проекта
    Убедимся в том, что проект был создан правильно. Введите команду runserver:

        (ll_env)learning_log$ python manage.py runserver
        Performing system checks...
    (1) System check identified no issues (0 silenced).
        July 15, 2015 - 06:23:51
    (2) Django version 1.8.4, using settings 'learning_log.settings'
    (3) Starting development server at http://127.0.0.1:8000/
        Quit the server with CONTROL-C.

    Django запускает сервер, чтобы вы могли просмотреть проект в своей системе и проверить, как он работает. Когда вы запрашиваете страницу, вводя URL в браузере, сервер Django отвечает на запрос; для этого он строит соответствующую страницу и отправляет страницу браузеру.

    В точке (1) Django проверяет правильность созданного проекта; в точке (2) выводится версия Django и имя используемого файла настроек; в точке (3) возвращается URL-адрес, по которому доступен проект. URL 127.0.0.1:8000/ означает, что проект ведет прослушивание запросов на порте 8000 локального хоста (localhost), то есть вашего компьютера. Термином «локальный хост» обозначается сервер, который обрабатывает только запросы вашей системы; он не позволяет никому другому просмотреть разрабатываемые страницы.

    Теперь откройте браузер и введите URL localhost:8000/ — или 127.0.0.1:8000/, если первый адрес не работает. Вы увидите нечто похожее на рис. 18.1 — страницу, которую создает Django, чтобы сообщить вам, что все пока работает правильно. Пока не завершайте работу сервера (но, когда вы захотите прервать ее, это можно сделать нажатием клавиш Ctrl+C).

    ПРИМЕЧАНИЕ
    Если вы получаете сообщение об ошибке «Порт уже используется», прикажите Django использовать другой порт; для этого введите команду python manage.py runserver 8001 и продолжайте перебирать номера портов по возрастанию, пока не найдете открытый порт.

    » Более подробно с книгой можно ознакомиться на сайте издательства
    » Оглавление
    » Отрывок

    Другие книги по теме:
    Автостопом по Python
    Авторы: К. Рейтц, Т. Шлюссер. Ссылка на обзор.

    Простой Python. Современный стиль программирования
    Автор: Б. Любанович Ссылка на обзор.

    Основы Data Science и Big Data. Python и наука о данных
    Авторы: Д. Силен, А. Мейсман, М. Али. Ссылка на обзор.

    Для Хаброжителей скидка 20% по купону — Python
    Поделиться публикацией
    Похожие публикации
    Комментарии 6
    • +1
      Доп скидки электронной версии кто купил первую версию электронной книги не будет? :)
      • +2
        Есть, будьте добры зайти в личный кабинет к заказу первого издания, нажать на знак «письмо» и все будет ) Если не регистрировались или другие вопросы — напишите на почту books@piter.com или здесь в личку.
        • 0
          Спасиб!
          • 0
            Еще раз большое спасибо!
            В какой раз убеждаюсь что правильно для себя решил только покупать книги вашего издательства и бумажные и электронные!
            • 0
              То есть я могу купить более дешевую книжку первого издания со скидкой 25% (за 399р), и получить бесплатно второе издание?
          • 0
            В epub версии книги решена проблема со шрифтами? Т.к. в первом издании, например, ссылки к строкам в коде не отображались. Т.е. нормально можно было читать только pdf версию.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое