Сегодня речь пойдет о создании сайта на языке Python, с использованием фреймворка Django.
Оговорюсь, что эта статья написана для людей знакомых с языком Python. Если Вы знаете, как написать "Hello, World!" - значит Вы можете написать сайт, но а продвинутым знатокам языка эта статья не покажет ничего нового.
Для работы будем использовать настроенную виртуальную машину (ВМ) с Ubuntu Server 18.04. В этой статье описано, создание данной конфигурации.
Для работы мы будем использовать виртуальное окружение (ВО) python и web-сервер apache. Перейдем к установке компонентов:
sudo apt-get install -y python3-pip
устанавливаем пакетный менеджер pip.
sudo apt-get install -y python3-venv
устанавливаем пакет виртуального окружения.
cd ~/ && python3 -m venv venv
переходим в домашнюю директорию и создаем виртуальное окружение в каталоге ~/venv/ (второе слово "venv").
Знак ~ (тильда) заменяется командной оболочкой, как путь к домашней директории текущего пользователя.
Если у Вас не установлен web-сервер Apache, установить его нужно командой ниже:
sudo apt-get install -y apache2
Теперь нам нужно активировать виртуальное окружение, чтобы в него установить необходимые пакеты.
source ~/venv/bin/activate
Активируем ВО.
В консоли, в начале строки, должно появится слово venv
Устанавливаем пакет Django в Virtual environment, следующей командой:
pip3 install django
Теперь нужно создать проект с нашим сайтом, я рекомендую создать для этого отдельную папку (например ~/Projects ). Перейти туда и создать django-проект, командой ниже (с активированным виртуальным окружением):
django-admin startproject MySite
Утилита создала каталог "MySite" (линукс - система чувствительная к регистру букв). Переходим в него
cd MySite
Мы создали проект Django, давайте добавим приложение, с названием"app", в котором и будет основная логика нашего сайта. Выполним команду:
django-admin startapp app
Чтобы наш проект "MySite", понимал что есть приложение с которым надо работать в файле settings.py необходимо добавить строку "app" в список INSTALLED_APP. Сразу добавим " '*' " в список разрешенных хостов, чтобы разрешить все адреса.
Давайте запустим, то, что у нас получилось на данном этапе. Перейдем в корень проекта ~/Projects/MySite/, здесь должен быть "управляющий" файл "manage.py". Выполним команду для запуска отладочного сервера.
python3 manage.py runserver
Теперь сервер запущен и сайт работает по адресу 127.0.0.1 на 8000 порту.
Теперь сделаем так, чтобы вместо страницы приветствия отображалась наша страница с проектом. Django - фреймворк, работающий по принципу MVC (модель, представление, контроллер), т.е. в файле с нашим приложением ~/Projects/MySite/app/models.py должны быть классы моделей, которые будут сущностями в базе данных. Файл ~/Projects/MySite/app/views.py - контроллер в концепции MVC для Django, в нем должны храниться классы или функции, которые управляют данными. Представление же, это HTML страница, на которой, собственно, отображаются данные.
Создадим каталог, в котором будут лежать наши html страницы. В каталоге приложения создаем папку templates.
В каталоге с шаблонами создаем файл index.html. Содержимое файла может быть любым, на Ваш вкус.
Теперь отредактируем файл контроллера (views.py), чтобы он отдавал данные в нашу html страницу. Создадим функцию, которая будет отображать на сайте "Hello, World!".
from django.shortcuts import render
def index(req):
content = {
'welcome': 'Hello, World!'
}
return render(req, 'index.html', content)
Функция render выполнит нашу index.html и подставит в нее данные из словаря content. Чтобы указать проекту, где искать наши представления редактируем файл settings.py. Нужно найти список TEMPLATES и привести его к виду, как на рисунке
Для отображения фразы на странице, в index.html нужно добавить строку:
{{ welcome }} в то место, где вы хотите отобразить "Hello, World!"
В нашем случае все почти готово, осталось задать адресацию сайта. Переходим в каталог с проектом и редактируем файл ~/Projects/MySite/MySite/urls.py. Нам необходимо указать по какому маршруту будет отображаться наша страница (файл приводим к виду указанному на рисунке ниже)
Далее, скопируем файл urls.py в директорию с нашим приложением:
cp ~/Projects/MySite/MySite/urls.py ..//app/
Приведем его к следующему виду:
Для проверки запустим отладочный сервер:
python3 manage.py runserver
Сайт должен отображать нужную фразу!
Программа-минимум выполнена, остается запустить сайт через WEB-сервер Apache.
Для этого, просто приведите файл /etc/apache2/sites-available/000-default.conf (от имени администратора) к виду, представленному ниже:
Перезагружаем apache2
sudo systemctl restart apache2
Готово.
Я стараюсь писать без терминов, умных слов и лишних объяснений. Статьи рассчитаны на новичков с IT сфере.
Спасибо за внимание!