Опубликован: 25.01.2016 | Уровень: для всех | Доступ: платный | ВУЗ: Российский Новый Университет
Лекция 4:

Создание аналога Twitter

Цель лекции: Рассмотреть основную терминологию Django; создать основную страницу приложения; создать структуру шаблона проекта на Django; настроить основной загрузчик для приложения, создать шаблон основной страницы.

Ключевые термины: django, bootstrap, файл, html, проект, css, class, python, user, admin, модель, страница, представление, приложение, пользователь

Разговор о терминологии Django

Django – это фреймворк, построенный на технологии MVC. На протяжении всего кода контроллер называется представлением, а представление называется шаблоном. Представление в Django – это компонент, который получает и манипулирует данными, а шаблон – это компонент, представляющий данные пользователю. По этой причине Django называют Модель-Шаблон-Представление (MTV) фреймворк. Эта разница не отменяет того факта, что Django является MVC фреймворком, не влияет на разработку приложений, но для предотвращения возможных коллизий требуется держать эту терминологию в голове, если вы соберетесь использовать MVC фреймворк.

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

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

Настройка основного шаблона приложения

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

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

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

Создание виртуального окружения

Мы настроим виртуальное окружение на правильную работу Django, используя следующую команду:

virtualenv djangoenv

Вы получите следующий вывод:

Using base prefix 'c:\\python34'
New python executable in djangoenv\Scripts\python.exe
Installing setuptools, pip, wheel...done.

Теперь нам нужно активировать виртуальное окружение и настроить все переменные среды таким образом, чтобы всё установленное Python будет перенаправляться в это окружение, не затрагивая другие параметры:

djangoenv\Scripts\activate

Вывод может быть следующим:

(djangoenv) C:\new1>

Установка Django

Хотя мы уже и устанавливали Django, мы сделаем это снова, потому что Django управляется virtualenv, которая не может разрешить работать другим пользователям или проектам (или себе самому) работать поверх него.

pip install django

Вы можете получить следующую ошибку:

bad interpreter: No such file or directory

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

/home/sergio/folder name with space$virtualenv djangoenv.

Если это так, то измените имя каталогу на что-то похожее на это:

/home/sergio/folder_name_with_no_space$virtualenv djangoenv

Теперь мы можем продолжить установку Django, используя команду pip install django. Вывод может выглядеть следующим образом:

Collecting django
Using cached Django-1.8.4-py2.py3-none-any.whl
Installing collected packages: django
Successfully installed django-1.8.4

Теперь прежде чем мы перейдем к созданию нашего приложения Django, мы убедимся, что установили Git. Чтобы узнать установленную версию Git, используйте следующую команду:

git --version 

Вывод может быть следующим:

git version 1.9.1

Это подтверждает, что мы установили Git. Конечно же, вы можете спросить, будем ли мы использовать систему контроля версий для этого проекта, и наш ответ: Да. По мере продвижения вперед, мы будем использовать систему контроля версий для большинства файлов проекта.

Создание структуры шаблона проекта на Django

В этом разделе мы создадим структуру для нашего проекта, к примеру, создадим каталог для нашего проекта с названием mytweets, установим необходимый пакет для нашего проекта и т.д. Выполним следующую команду:

django-admin.py startproject mytweets

Эта команда создаст каталог под названием mytweets, который мы будем использовать в качестве каталога нашего проекта. В текущем каталоге мы увидим два вложенных каталога: environment и mytweets. Вопрос заключается в том, собираемся ли мы включить эти два каталога в систему контроля версий? Мы не будем этого делать, потому что эти файлы являются весьма специфическими для вашей текущей системы. Они никак не помогут настроить такое же окружение, как наше. Кроме этого, есть и другой способ сделать это в Python: с помощью команды pip freeze. Эта команда делает моментальный снимок всех текущих библиотек, установленных в приложении Django, и вы можете их список в текстовый файл и использовать в системе контроля версий. Таким образом, ваш юный разработчик может скачать ту же версию библиотек. Не правда ли, путь Python решает?

Самый распространенный метод для установки новых пакетов – использование команды pip. Есть три версии команды pip install, и они представлены ниже:

pip install PackageName

Это команда по умолчанию и устанавливает последнюю версию пакета

pip install PackageName==l.0.4

Используя параметр ==, можно установвить конкретную версию пакета. В данном случае, это версия 1.0.4.

pip install 'PackageName>=1.0.41 # minimum version

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

Легко использовать команду pip для установки библиотек. Вы можете это сделать, использовав следующую команду:

pip install -r requirements.txt

Теперь необходимо "заморозить" библиотеки:

pip freeze > requirements.txt

Это "замораживает" библиотеки, установленные для проекта с номером версии, и сохраняет их в файл с именем requirements.txt.

На этой стадии нашего проекта действие команды freeze выглядит примерно так:

Django==l.6.5 
argparse==l.2.1 
wsgiref == 0.1.2

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

pip install -r requirements.txt

Теперь мы можем приступить к инициализации нашей директории с кодом в виде репозитория Git и изменить текущий путь на $cd mytweets. Выполните следующую команду для построения репозитория Git в каталоге вашего проекта:

git init

Результат будет следующим:

Initialized empty Git repository in C:\new1\mytweets\.git\

Если мы запустим все команды на системе, основанной на Linux для подробного вывода списка каталога мы увидим следующий вывод:

drwxrwxr-x 7 sergio sergio 4096 Aug 2 16:07 .git/

Это каталог .git, который, согласно соглашению об именах(начинается с точки) скрыт от обычного просмотра каталога, то есть, это каталог, где помещаются все связанные с Git файлы, такие как ветви, файлы, добавленные в промежуточную область, логи, и сохраняются. Удаление этого конкретного каталога сделает ваш каталог Git-свободным (свободным от контроля версий) и он становится таким же обычным каталогом, как любой другой каталог в вашей текущей системе.

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

$git add .

Используйте следующую команду, для первого подтверждения проекта:

 git commit -m "Начальная промежуточная версия проекта." 

Вывод может быть следующим:

[master (root-commit) 00f3f54] Первоначальная промежуточная версия проекта
warning: LF will be replaced by CRLF in manage.py.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in mytweets/settings.py.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in mytweets/urls.py.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in mytweets/wsgi.py.
The file will have its original line endings in your working directory.
 5 files changed, 149 insertions(+)
 create mode 100644 manage.py
 create mode 100644 mytweets/__init__.py
 create mode 100644 mytweets/settings.py
 create mode 100644 mytweets/urls.py
 create mode 100644 mytweets/wsgi.py

C:\new1\mytweets>

Первая строка (здесь это master) говорит о том, что мы в ветке master, а другие строки о том. какие файлы попали в промежуточную область.

Итак, мы настроили основной шаблон Django и добавили его в систему контроля версий. то же может быть проверено с помощью следующей команды:

git log

Вывод может быть следующим:

commit 00f3f542089ffbaaf88df3e085fbdba10c1a3525
Author: ratan <tilllindemann85@outlook.com>
Date:   Tue Sep 1 18:32:22 2015 +0300
Первоначальная промежуточная версия проекта

Инструкции по настройке автора и генерации SSH-ключей для выгрузки на удаленный репозиторий могут быть найдены по следующим ссылкам:

https://help.github.com/articles/set-up-git
https://help.github.com/artides/generating-ssh-keys
Константин Боталов
Константин Боталов

Вроде легкие вопросы и ответы знаю правильные, но система считает иначе и правильные ответысчитает неправильными. Приходится выполнть по несколько раз. Это я не правильно делаю или тест так составлен?

Владимир Филипенко
Владимир Филипенко

Листинг показывает в 4-ой лекции, что установлен Django 1.8.4. Тут же далее в этой лекции указаны настройки, которые воспринимает Django 1.7 и младше.

Дмитрий Молокоедов
Дмитрий Молокоедов
Россия, Новосибирск, НГПУ, 2009
Акбар Ахвердов
Акбар Ахвердов
Россия, г. Москва