Программисты проводят много времени за написанием, чтением и редактированием кода. Очень важно, чтобы в используемом текстовом редакторе эта работа выполнялась по возможности эффективно. Эффективный редактор должен выделять структуру кода, чтобы вы могли обнаружить типичные ошибки во время работы. Также редактор должен поддерживать автоматическую расстановку отступов, маркеры для обозначения длины строки и комбинации клавиш для часто выполняемых операций.
Начинающему программисту рекомендуется использовать редактор, который поддерживает все эти функции, но не создает проблем на начальном этапе. Также желательно кое-что знать о более сложных редакторах, чтобы вы понимали, в какой момент можно задуматься над переходом.
Мы рассмотрим современные редакторы для всех основных операционных систем: Geany для новичков, работающих в Linux и Windows, и Sublime Text для OS X (хотя этот редактор также работает в Linux и Windows). Также мы рассмотрим IDLE, редактор, который поставляется с Python по умолчанию. Наконец, мы рассмотрим Emacs и vim — два сложных редактора, о которых вы будете часто слышать, когда будете проводить больше времени за программированием. Мы используем hello_world.py в качестве примера и запустим эту программу в каждом редакторе.
Geany
Geany — простой текстовый редактор, который позволяет запускать почти все программы прямо из редактора. Кроме того, Geany выводит результаты в терминальном окне, что поможет вам освоить работу в терминале.
Установка Geany в Linux
В большинстве систем Linux установка Geany выполняется одной строкой:
$ sudo apt-get install geany
Если в системе установлено несколько версий Python, необходимо настроить Geany для использования правильной версии. Откройте Geany, выберите команду File—>Save As и сохраните пустой файл под именем hello_world.py. Введите следующую строку в окне редактора:
print("Hello Python world!")
Откройте окно Build—>Set Build Commands. В окне приведены команды Compile и Execute, рядом с каждым из которых располагается команда. Geany предполагает, что правильной командой в каждом случае является python, но если в системе должна использоваться команда python3, настройку необходимо изменить. Введите в поле Compile следующий текст:
python3 -m py_compile "%f"
Команда должна быть введена точно в таком виде без малейших изменений. Проследите за правильностью регистра символов и расстановки пробелов.
Команда Execute должна выглядеть так:
python3 "%f"
И снова тщательно проверьте пробелы и регистр символов.
Установка Geany в Windows
Программу установки Geany для Windows можно загрузить по адресу http://geany.org/. Щелкните в строке Releases меню Download и найдите пакет geany-1.25_setup.exe (или что-нибудь в этом роде). Запустите программу и подтвердите все значения по умолчанию.
Откройте Geany, выберите команду File—>Save As и сохраните пустой файл под именем hello_world.py. Введите следующую строку в окне редактора:
print("Hello Python world!")
Откройте окно Build—>Set Build Commands. В окне содержатся поля Compile и Execute, рядом с каждым из которых располагается команда. Каждая команда должна начинаться с python (в нижнем регистре), но Geany не знает, где в вашей системе хранится программа python. Путь к ней необходимо добавить в начале терминального сеанса. (Вы можете пропустить эти действия, если вы настроили переменную Path так, как описано в приложении А.)
В полях Compile и Execute введите диск и путь к каталогу, в котором находится программа python. Команда Compile должна выглядеть примерно так:
C:\Python35\python -m py_compile "%f"
Возможно, в вашей системе путь будет немного другим, но регистр символов и пробелы должны выглядеть точно так, как показано выше.
Команда Execute должна выглядеть так:
C:\Python35\python "%f"
И снова тщательно проверьте пробелы и регистр символов. Когда настройка команд будет завершена, щелкните на кнопке OK. Теперь ваши программы должны запускаться без проблем.
Запуск программ Python из Geany
Существуют три способа запуска программ из Geany. Чтобы запустить hello_world.py, выберите в меню команду Build—>Execute, щелкните на кнопке с шестеренками или нажмите клавишу F5. При запуске hello_world.py на экране появляется терминальное окно со следующим выводом:
Hello Python world!
------------------
(program exited with code: 0)
Press return to continue
Настройка Geany
Теперь мы настроим Geany, чтобы работа проходила с максимальной эффективностью. Для этого мы настроим функции, упомянутые в начале приложения.
Преобразование табуляций в пробелы
Чередование символов табуляции и пробелов в коде может создать проблемы в программах Python. Чтобы проверить настройки отступов в Geany, выберите команду Edit—>Preferences—>Editor—>Indentation. Задайте ширину табуляции равной 4 и выберите в поле Type значение Spaces.
Если в вашей программе табуляции чередуются с пробелами, вы можете преобразовать все табуляции в пробелы командой Document—>Replace Tabs by Spaces.
Выбор индикатора длины строки
В большинстве редакторов существует возможность назначения визуального признака (обычно вертикальной линии), обозначающего рекомендуемую длину строки. Чтобы включить эту возможность, выберите команду Edit—>Preferences—>Editor—>Display, и убедитесь в том, что флажок Long line установлен. Затем убедитесь в том, что в поле Column задано значение 79.
Расстановка и отмена отступов в блоках
Чтобы включить отступ в блоке, выделите код и выберите команду Edit—>Format—>Increase Indent или нажмите Ctrl+I. Чтобы убрать отступ в блоке, выберите команду Edit—>Format—>Decrease Indent или нажмите Ctrl+U.
Преобразование блоков в комментарий
Чтобы временно исключить блок кода из программы, вы можете выделить блок и закрыть его комментарием, чтобы интерпретатор Python игнорировал его. Выберите команду Edit—>Format—>Toggle Line Commentation (Ctrl+E). Строки помечаются специальной последовательностью (#~), указывающей, что это не обычный комментарий. Когда вы захотите вернуть блок в программу, выделите его и выберите ту же команду.
Sublime Text
Sublime Text — простой текстовый редактор, который легко устанавливается в OS X (и во многих других системах) и позволяет выполнять почти все программы прямо из редактора. Он также выполняет ваш код в терминальном сеансе, встроенном в окно Sublime Text, что упрощает просмотр результатов. Политика лицензирования Sublime Text более чем либеральна: вы можете бесплатно пользоваться редактором сколь угодно долго, но автор требует приобрести лицензию, если программа вам понравилась и вы собираетесь использовать ее в будущем. Мы загрузим Sublime Text 3 — новейшую версию на момент написания книги.
Установка Sublime Text в OS X
Загрузите программу установки Sublime Text по адресу http://www.sublimetext.com/3. Перейдите по ссылке загрузки и выберите программу установки для OS X. Когда она будет загружена, откройте программу и перетащите значок Sublime Text в папку Applications.
Установка Sublime Text в Linux
В большинстве систем Linux редактор Sublime Text проще всего устанавливается из терминального сеанса:
$ sudo add-apt-repository ppa:webupd8team/sublime-text-3
$ sudo apt-get update
$ sudo apt-get install sublime-text-installer
Установка Sublime Text в Windows
Загрузите программу установки для Windows по адресу http://www.sublimetext.com/3. Запустите программу установки, и редактор Sublime Text появится в меню Пуск.
Запуск программ Python в Sublime Text
Если вы используете версию Python, включенную в поставку системы, скорее всего, вы сможете запускать программы без изменения каких-либо настроек. Чтобы запустить программы, выберите команду Tools—>Build или нажмите Ctrl+B. Когда вы запускаете hello_world.py, в нижней части окна Sublime Text должна появиться панель терминала со следующим выводом
Hello Python world!
[Finished in 0.1s]
Настройка Sublime Text
Если в вашей системе установлено несколько версий Python или Sublime Text не запускает программы Python автоматически, придется внести изменения в файл конфигурации. Сначала необходимо узнать полный путь к интерпретатору Python. В Linux и OS X введите следующую команду:
$ type -a python3
python3 is /usr/local/bin/python3
Замените python3 командой, которую вы обычно используете для запуска терминального сеанса.
Если вы работаете в системе Windows, обращайтесь к разделу «Установка Python 3 в Windows» на с. 466, в котором рассказано, как найти путь к интерпретатору Python.
Теперь откройте Sublime Text и выберите команду Tools—>Build System—>New Build System, которая открывает новый конфигурационный файл. Удалите текущее содержимое и введите следующий фрагмент кода:
Python3.sublime-build
{
. ."cmd": ["/usr/local/bin/python3", "-u", "$file"],
}
Этот код приказывает Sublime Text использовать команду python3 при выполнении текущего открытого файла. Убедитесь в том, что вы используете путь, определенный на предыдущем шаге (в Windows это путь C:/Python35/python или что-нибудь в этом роде). Сохраните файл под именем Python3.sublime-build в каталоге по умолчанию, который открывает Sublime Text при выборе команды Save.
Откройте файл hello_world.py, выберите команду Tools—>Build System—>Python3, а затем Tools—>Build. Вывод должен отображаться в терминале, встроенном в нижней части окна Sublime Text.
Настройка Sublime Text
Теперь мы настроим Sublime Text, чтобы работа проходила с максимальной эффективностью. Для этого мы настроим функции, упомянутые в начале приложения.
Преобразование табуляций в пробелы
Выберите команду View—>Indentation и убедитесь в том, что флажок Indent Using Spaces установлен. Если флажок снят, установите его.
Выбор индикатора длины строки
Выберите команду View—>Ruler и щелкните на значении 80. Sublime Text устанавливает вертикальную черту в позиции 80-го символа.
Расстановка и отмена отступов в блоках
Чтобы включить отступ в блоке, выделите код и выберите команду Edit—>Line—>Indent или нажмите Ctrl+]. Чтобы убрать отступ в блоке, выберите команду Edit—>Line—>Unindent или нажмите Ctrl+[.
IDLE
Оглавление
- Изучаем Python. Программирование игр, визуализация данных, веб-приложения
- Об авторе
- О научном рецензенте
- Благодарности
- Введение
- Для кого написана эта книга?
- Чему эта книга вас научит?
- Почему именно Python?
- От издательства
- Часть I. Основы
- 1. Начало работы
- Подготовка среды программирования
- Python 2 и Python 3
- Выполнение фрагментов кода Python
- Hello World!
- Python в разных операционных системах
- Python в системе Linux
- Проверка версии Python
- Установка текстового редактора
- Запуск программы Hello World
- Запуск Python в терминальном сеансе
- Python в системе OS X
- Проверка наличия Python
- Запуск Python в терминальном сеансе
- Установка текстового редактора
- Настройка Sublime Text для Python 3
- Запуск программы Hello World
- Python в системе Windows
- Установка Python
- Запуск терминального сеанса
- Запуск Python в терминальном сеансе
- Установка текстового редактора
- Настройка Geany
- Запуск программы Hello World
- Решение проблем с установкой
- Запуск программ Python в терминале
- В Linux и OS X
- В Windows
- Итоги
- 2. Переменные и простые типы данных
- Что происходит при запуске hello_world.py
- Переменные
- Выбор имен и использование переменных
- Предотвращение ошибок в именах при использовании переменных
- Строки
- Изменение регистра символов в строках
- Конкатенация
- Табуляции и разрывы строк
- Удаление пропусков
- Предотвращение синтаксических ошибок в строках
- Вывод в Python 2
- Числа
- Целые числа
- Вещественные числа
- Предотвращение ошибок типов с использованием функции str()
- Целые числа в Python 2
- Комментарии
- Как создаются комментарии?
- Какие комментарии следует писать?
- Философия Python
- Итоги
- 3. Списки
- Что такое список?
- Обращение к элементам списка
- Индексы начинаются с 0, а не с 1
- Использование отдельных элементов из списка
- Изменение, добавление и удаление элементов
- Изменение элементов в списке
- Добавление элементов в список
- Присоединение элементов в конец списка
- Вставка элементов в список
- Удаление элементов из списка
- Удаление элемента с использованием команды del
- Удаление элемента с использованием метода pop()
- Извлечение элементов из произвольной позиции списка
- Удаление элементов по значению
- Упорядочение списка
- Постоянная сортировка списка методом sort()
- Временная сортировка списка функцией sorted()
- Вывод списка в обратном порядке
- Определение длины списка
- Ошибки индексирования при работе со списками
- Итоги
- 4. Работа со списками
- Перебор всего списка
- Подробнее о циклах
- Более сложные действия в циклах for
- Выполнение действий после цикла for
- Предотвращение ошибок с отступами
- Пропущенный отступ
- Пропущенные отступы в других строках
- Лишние отступы
- Лишние отступы после цикла
- Пропущенное двоеточие
- Создание числовых списков
- Функция range()
- Использование range() для создания числового списка
- Простая статистика с числовыми списками
- Генераторы списков
- Работа с частью списка
- Создание среза
- Перебор содержимого среза
- Копирование списка
- Кортежи
- Определение кортежа
- Перебор всех значений в кортеже
- Замена кортежа
- Стиль программирования
- Рекомендации по стилю
- Отступы
- Длина строк
- Пустые строки
- Другие рекомендации
- Итоги
- 5. Команды if
- Простой пример
- Проверка условий
- Проверка равенства
- Проверка равенства без учета регистра
- Проверка неравенства
- Сравнения чисел
- Проверка нескольких условий
- Использование and для проверки нескольких условий
- Использование or для проверки нескольких условий
- Проверка вхождения значений в список
- Проверка отсутствия значения в списке
- Логические выражения
- Команды if
- Простые команды if
- Команды if-else
- Цепочки if-elif-else
- Серии блоков elif
- Отсутствие блока else
- Проверка нескольких условий
- Использование команд if со списками
- Проверка специальных значений
- Проверка наличия элементов в списке
- Множественные списки
- Оформление команд if
- Итоги
- 6. Словари
- Простой словарь
- Работа со словарями
- Обращение к значениям в словаре
- Добавление новых пар «ключ—значение»
- Создание пустого словаря
- Изменение значений в словаре
- Удаление пар «ключ—значение»
- Словарь с однотипными объектами
- Перебор словаря
- Перебор всех пар «ключ—значение»
- Перебор всех ключей в словаре
- Упорядоченный перебор ключей словаря
- Перебор всех значений в словаре
- Вложение
- Список словарей
- Список в словаре
- Словарь в словаре
- Итоги
- 7. Ввод данных и циклы while
- Как работает функция input()
- Содержательные подсказки
- Использование int() для получения числового ввода
- Оператор вычисления остатка
- Ввод данных в Python 2.7
- Циклы while
- Цикл while в действии
- Пользователь решает прервать работу программы
- Флаги
- Команда break и выход из цикла
- Команда continue и продолжение цикла
- Предотвращение зацикливания
- Использование цикла while со списками и словарями
- Удаление всех вхождений конкретного значения из списка
- Заполнение словаря данными, введенными пользователем
- Итоги
- 8. Функции
- Определение функции
- Передача информации функции
- Аргументы и параметры
- Передача аргументов
- Позиционные аргументы
- Многократные вызовы функций
- О важности порядка позиционных аргументов
- Именованные аргументы
- Значения по умолчанию
- Эквивалентные вызовы функций
- Предотвращение ошибок в аргументах
- Возвращаемое значение
- Возвращение простого значения
- Необязательные аргументы
- Возвращение словаря
- Использование функции в цикле while
- Передача списка
- Изменение списка в функции
- Запрет изменения списка в функции
- Передача произвольного набора аргументов
- Позиционные аргументы с произвольными наборами аргументов
- Использование произвольного набора именованных аргументов
- Хранение функций в модулях
- Импортирование всего модуля
- Импортирование конкретных функций
- Назначение псевдонима для функции
- Назначение псевдонима для модуля
- Импортирование всех функций модуля
- Стилевое оформление функций
- Итоги
- 9. Классы
- Создание и использование класса
- Создание класса Dog
- Метод __init__()
- Создание классов в Python 2.7
- Создание экземпляра класса
- Обращение к атрибутам
- Вызов методов
- Создание нескольких экземпляров
- Работа с классами и экземплярами
- Класс Car
- Назначение атрибуту значения по умолчанию
- Изменение значений атрибутов
- Прямое изменение значения атрибута
- Изменение значения атрибута с использованием метода
- Изменение значения атрибута с приращением
- Наследование
- Метод __init__() класса-потомка
- Наследование в Python 2.7
- Определение атрибутов и методов класса-потомка
- Переопределение методов класса-родителя
- Экземпляры как атрибуты
- Моделирование объектов реального мира
- Импортирование классов
- Импортирование одного класса
- Хранение нескольких классов в модуле
- Импортирование нескольких классов из модуля
- Импортирование всего модуля
- Импортирование всех классов из модуля
- Импортирование модуля в модуль
- Выработка рабочего процесса
- Стандартная библиотека Python
- Оформление классов
- Итоги
- 10. Файлы и исключения
- Чтение из файла
- Чтение всего файла
- Пути к файлам
- Чтение по строкам
- Создание списка строк по содержимому файла
- Работа с содержимым файла
- Большие файлы: миллион цифр
- Проверка дня рождения
- Запись в файл
- Запись в пустой файл
- Многострочная запись
- Присоединение данных к файлу
- Исключения
- Обработка исключения ZeroDivisionError
- Блоки try-except
- Использование исключений для предотвращения аварийного завершения программы
- Блок else
- Обработка исключения FileNotFoundError
- Анализ текста
- Работа с несколькими файлами
- Ошибки без уведомления пользователя
- О каких ошибках нужно сообщать?
- Сохранение данных
- Функции json.dump() и json.load()
- Сохранение и чтение данных, сгенерированных пользователем
- Рефакторинг
- Итоги
- 11. Тестирование
- Тестирование функции
- Прохождение теста
- Сбой теста
- Реакция на сбойный тест
- Добавление новых тестов
- Тестирование класса
- Разные методы assert
- Класс для тестирования
- Тестирование класса AnonymousSurvey
- Метод setUp()
- Итоги
- Часть II. Проекты
- Программирование игры на языке Python
- Визуализация данных
- Веб-приложения
- Проект 1. Инопланетное вторжение
- Планирование проекта
- Установка Pygame
- Установка пакетов Python с использованием pip
- Проверка pip в Linux и OS X
- Проверка pip в Windows
- Установка pip
- Установка pip в Linux и OS X
- Установка pip в Windows
- Установка Pygame в Linux
- Установка Pygame в OS X
- Установка Pygame в Windows
- Создание проекта игры
- Создание окна Pygame и обработка ввода
- Назначение цвета фона
- Создание класса Settings
- Добавление изображения корабля
- Создание класса Ship
- Вывод корабля на экран
- Рефакторинг: модуль game_functions
- Функция check_events()
- Функция update_screen()
- Управление кораблем
- Обработка нажатия клавиши
- Непрерывное перемещение
- Перемещение влево и вправо
- Регулировка скорости корабля
- Ограничение перемещений
- Рефакторинг check_events()
- В двух словах
- alien_invasion.py
- settings.py
- game_functions.py
- ship.py
- Стрельба
- Добавление настроек
- Создание класса Bullet
- Группировка пуль
- Обработка выстрелов
- Удаление старых пуль
- Ограничение количества пуль
- Создание функции update_bullets()
- Создание функции fire_bullet()
- Итоги
- 13. Осторожно, пришельцы!
- Анализ проекта
- Создание пришельца
- Создание класса Alien
- Создание экземпляра Alien
- Отображение пришельца на экране
- Построение флота
- Вычисление количества пришельцев в одном ряду
- Создание ряда
- Создание флота
- Рефакторинг create_fleet()
- Добавление рядов
- Перемещение флота
- Перемещение вправо
- Создание настроек для направления флота
- Проверка достижения края
- Снижение флота и смена направления
- Уничтожение пришельцев
- Выявление коллизий
- Создание больших пуль для тестирования
- Восстановление флота
- Ускорение пуль
- Рефакторинг update_bullets()
- Завершение игры
- Обнаружение коллизий с кораблем
- Обработка столкновений с кораблем
- Достижение нижнего края экрана
- Конец игры
- Определение исполняемых частей игры
- Итоги
- 14. Ведение счета
- Добавление кнопки Play
- Создание класса Button
- Вывод кнопки на экран
- Запуск игры
- Сброс игры
- Блокировка кнопки Play
- Сокрытие указателя мыши
- Повышение сложности
- Изменение настроек скорости
- Сброс скорости
- Подсчет очков
- Вывод счета
- Создание экземпляра Scoreboard
- Обновление счета при уничтожении пришельцев
- Начисление очков за все попадания
- Увеличение стоимости пришельцев
- Округление счета
- Рекорды
- Вывод уровня
- Вывод количества кораблей
- Итоги
- Проект 2. Визуализация данных
- Установка matplotlib
- В Linux
- В OS X
- В Windows
- Тестирование matplotlib
- Галерея matplotlib
- Построение простого графика
- Изменение типа надписей и толщины графика
- Корректировка графика
- Нанесение и оформление отдельных точек функцией scatter()
- Вывод серии точек функцией scatter()
- Автоматическое вычисление данных
- Удаление контуров точек
- Определение пользовательских цветов
- Цветовые карты
- Автоматическое сохранение диаграмм
- Случайное блуждание
- Создание класса RandomWalk()
- Выбор направления
- Вывод случайного блуждания
- Генерирование нескольких случайных блужданий
- Оформление случайного блуждания
- Назначение цветов
- Начальные и конечные точки
- Удаление осей
- Добавление точек
- Изменение размера диаграммы для заполнения экрана
- Моделирование бросков кубиков в Pygal
- Установка Pygal
- Галерея Pygal
- Создание класса кубика
- Бросок кубика
- Анализ результатов
- Построение гистограммы
- Бросок двух кубиков
- Броски кубиков с разным числом граней
- Итоги
- 16. Загрузка данных
- Формат CSV
- Разбор заголовка файлов CSV
- Печать заголовков и их позиций
- Извлечение и чтение данных
- Нанесение данных на диаграмму
- Модуль datetime
- Представление дат на диаграмме
- Расширение временного диапазона
- Нанесение на диаграмму второй серии данных
- Цветовое выделение части диаграммы
- Проверка ошибок
- Формат JSON
- Загрузка демографических данных
- Извлечение необходимых данных
- Преобразование строк в числовые значения
- Получение кодов стран
- Построение карты мира
- Нанесение числовых данных на карту мира
- Построение полной карты населения
- Группировка стран по населению
- Оформление карты мира в Py gal
- Осветление темы
- Итоги
- 17. Работа с API
- Использование API веб-приложений
- Git и GitHub
- Запрос данных с использованием вызовов API
- Установка пакета reques ts
- Обработка ответа API
- Работа со словарем ответа
- Сводка самых популярных репозиториев
- Проверка ограничений частоты обращений API
- Визуализация репозиториев с использованием Pygal
- Доработка диаграмм Pygal
- Добавление подсказок
- Нанесение данных на диаграмму
- Добавление активных ссылок на диаграмму
- API Hacker News
- Итоги
- Проект 3. Веб-приложения
- Подготовка к созданию проекта
- Написание спецификации
- Создание виртуальной среды
- Установка virtualenv
- Активизация виртуальной среды
- Установка Django
- Создание проекта в Django
- Создание базы данных
- Просмотр проекта
- Начало работы над приложением
- Определение моделей
- Активизация моделей
- Административный сайт Django
- Создание суперпользователя
- Регистрация модели на административном сайте
- Добавление тем
- Определение модели Entry
- Миграция модели Entry
- Регистрация Entry на административном сайте
- Интерактивная оболочка Django
- Создание страниц: домашняя страница Learning Log
- Сопоставление URL
- Написание представления
- Написание шаблона
- Построение других страниц
- Наследование шаблонов
- Родительский шаблон
- Дочерний шаблон
- Страница со списком тем
- Схема URL для тем
- Представление topics
- Шаблон topics
- Страницы отдельных тем
- Схема URL для отдельных тем
- Представление отдельной темы
- Шаблон отдельной темы
- Ссылки на странице
- Итоги
- 19. Учетные записи пользователей
- Редактирование данных
- Добавление новых тем
- Объект ModelForm
- URL-адрес для new_topic
- Функция представления new_topic()
- Запросы GET и POST
- Шаблон new_topic
- Создание ссылки на страницу new_topic
- Добавление новых записей
- Класс EntryForm
- URL-адрес для new_entry
- Функция представления new_entry()
- Шаблон new_entry
- Создание ссылки на страницу new_entry
- Добавление записей
- URL-адрес для edit_entry
- Функция представления edit_entry()
- Шаблон edit_entry
- Создание ссылки на страницу edit_entry
- Создание учетных записей пользователей
- Приложение users
- Добавление пользователей в settings.py
- Включение URL-адресов из users
- Страница входа
- Шаблон login
- Создание ссылки на страницу входа
- Использование страницы входа
- Выход
- URL-адрес выхода
- Функция представления logout_view()
- Ссылка на представление выхода
- Страница регистрации
- URL-адрес регистрации
- Функция представления register()
- Шаблон регистрации
- Создание ссылки на страницу регистрации
- Редактирование данных
- Ограничение доступа с использованием @login_required
- Ограничение доступа к страницам тем
- Ограничение доступа в Learning Log
- Связывание данных с конкретными пользователями
- Изменение модели Topic
- Идентификация существующих пользователей
- Миграция базы данных
- Ограничение доступа к темам
- Защита тем пользователя
- Защита страницы edit_entry
- Связывание новых тем с текущим пользователем
- Итоги
- 20. Оформление и развертывание приложения
- Оформление приложения Learning Log
- Приложение django-bootstrap3
- Использование Bootstrap для оформления Learning Log
- Изменение base.html
- Определение заголовков HTML
- Определение навигационной панели
- Определение основного раздела страницы
- Модификация домашней страницы
- Оформление страницы входа
- Оформление страницы new_topic
- Оформление страницы со списком тем
- Оформление записей на странице темы
- Развертывание Learning Log
- Создание учетной записи Heroku
- Установка инструментария Heroku Toolbelt
- Установка необходимых пакетов
- Создание списка пакетов с файлом requirements.txt
- Назначение исполнительной среды Python
- Изменение файла settings.py для Heroku
- Создание файла Procfile для запуска процессов
- Изменение файла wsgi.py для Heroku
- Создание каталога для статических файлов
- Локальное использование сервера gunicorn
- Использование Git для управления файлами проекта
- Установка Git
- Настройка Git
- Игнорирование файлов
- Закрепление состояния проекта
- Отправка проекта
- Подготовка базы данных в Heroku
- Доработка развернутого приложения
- Создание суперпользователя в Heroku
- Создание удобного URL-адреса на Heroku
- Безопасность проекта
- Закрепление и отправка изменений
- Создание специализированных страниц ошибок
- Создание пользовательских шаблонов
- Локальный просмотр страниц ошибок
- Отправка изменений на Heroku
- Использование метода get_object_or_404()
- Текущая разработка
- Параметр SECRET_KEY
- Удаление проекта с Heroku
- Итоги
- Приложение А. Установка Python
- Python в системе Linux
- Определение установленной версии
- Установка Python 3 в Linux
- Python в os x
- Определение установленной версии
- Использование Homebrew для установки Python 3
- Установка Homebrew
- Установка Python 3
- Python в Windows
- Установка Python 3 в Windows
- Поиск интерпретатора Python
- Включение Python в переменную PATH
- Ключевые слова и встроенные функции Python
- Ключевые слова Python
- Встроенные функции Python
- Приложение Б. Текстовые редакторы
- Geany
- Установка Geany в Linux
- Установка Geany в Windows
- Запуск программ Python из Geany
- Настройка Geany
- Преобразование табуляций в пробелы
- Выбор индикатора длины строки
- Расстановка и отмена отступов в блоках
- Преобразование блоков в комментарий
- Sublime Text
- Установка Sublime Text в OS X
- Установка Sublime Text в Linux
- Установка Sublime Text в Windows
- Запуск программ Python в Sublime Text
- Настройка Sublime Text
- Настройка Sublime Text
- Преобразование табуляций в пробелы
- Выбор индикатора длины строки
- Расстановка и отмена отступов в блоках
- IDLE
- Установка IDLE в Linux
- Установка IDLE в OS X
- Установка IDLE в Windows
- Настройка IDLE
- Расстановка и отмена отступов в блоках
- Преобразование блоков в комментарий
- Emacs и vim
- Приложение В. Помощь и поддержка
- Первые шаги
- Попробуйте заново
- Сделайте перерыв
- Обратитесь к ресурсам этой книги
- Поиск в Интернете
- Stack Overflow
- Официальная документация Python
- Официальная документация библиотек
- r/learnpython
- Сообщения в блогах
- IRC (Internet Relay Chat)
- Создание учетной записи IRC
- Выбор канала
- Культура IRC
- Приложение Г. Git и контроль версий
- Установка Git
- Установка Git в Linux
- Установка Git в OS X
- Установка Git в Windows
- Настройка Git
- Создание проекта
- Игнорирование файлов
- Инициализация репозитория
- Проверка статуса
- Добавление файлов в репозиторий
- Закрепление
- Просмотр журнала
- Второе закрепление
- Отмена изменений
- Извлечение предыдущих закреплений
- Удаление репозитория
- Послесловие