Введение
Если вы пересмотрели множество источников по этой теме, но так и не смогли приступить к изучению процесса разработки веб-сайта – поздравляю, вы нашли тот самый сайт, с которым вам просто и понятно дастся обучение всему, что нужно для создания полноценного Интернет-ресурса. Здесь вы найдёте всё: основы вёрстки на HTML + CSS, принципы работы с фреймворком Django, деплой на VPS-сервер и настройка Nginx и Gunicorn на сервере.
Что такое Django?
Django - это фреймворк для создания веб-сайтов и веб-приложений на языке Python, который используют такие крупные компании, как Instagram*, Pinterest и NASA, построенный по архитектурному шаблону MVT (Model-View-Template).
- Model (Модель) – отвечает за структуру базы данных и логику работы с объектами. Django использует ORM (Object-Relational Mapping), что позволяет работать с БД через код Python без написания SQL-запросов;
- View (Представление) – отвечает за обработку HTTP-запросов, взаимодействие с моделями и выбор данных, которые будут отображаться пользователю;
- Template (Шаблон) – описывает, как данные будут выглядеть на странице (HTML-код с использованием специального языка шаблонов Django).
Преимущества Django
- Объектно-реляционное отображение ORM: предоставляет возможность работать с БД на Python, не используя SQL-запросы;
- Шаблонизатор: позволяет динамически форматировать HTML-страницы, что значительно упрощает чтение HTML-кода и ускоряет процесс разработки;
- Админ-панель: позволяет автору управлять данными на сайте без написания текста в HTML-файле. Она отправляет эти данные в БД, которые берёт шаблонизатор;
- Безопасность: автоматическая защита от SQL-инъекций, межсайтового скриптинга (XSS) и подделки межсайтовых запросов (CSRF);
- Экосистема и сообщество: Django является одним из самых популярных инструментов для серверной разработки. Наличие обширной документации и активного сообщества разработчиков упрощает создание сайта и исправление ошибок.
Вёрстка. Что такое тег в HTML?
Вёрстка – это описание того, как будет выглядеть веб-страница, говоря простым языком. С помощью языка гипертекстовой разметки HTML определяется структура изложенной информации на странице, а каскадные таблицы стилей CSS отвечают за внешний вид того или иного объекта, а также его расположение.
Приступим к изучению азов HTML.
Для начала определим, как выглядит логика и структура языка разметки. HTML строится из элементов, каждый из которых обосабливается тегами. Тег представляет собой текстовую метку в угловых скобках "<>". Теги бывают открывающими и закрывающими. Открывающий тег – это тег вида "<тег>", а закрывающий – вида "</тег>". Есть парные открывающие и закрывающие теги, которые нельзя использовать по отдельности, а есть непарные, состоящие только из открывающего.
Примеры:
Приступим к изучению азов HTML.
Для начала определим, как выглядит логика и структура языка разметки. HTML строится из элементов, каждый из которых обосабливается тегами. Тег представляет собой текстовую метку в угловых скобках "<>". Теги бывают открывающими и закрывающими. Открывающий тег – это тег вида "<тег>", а закрывающий – вида "</тег>". Есть парные открывающие и закрывающие теги, которые нельзя использовать по отдельности, а есть непарные, состоящие только из открывающего.
Примеры:
<a>Клик</a>: этот элемент – ссылка с текстом "Клик";<b>Контент</b>: элемент – полужирный текст с надписью "Контент";<img>(пример непарного тега): элемент – картинка и т. д.
Вёрстка. Иерархия элементов
В HTML существует определённая иерархия элементов. Каркас простой HTML-страницы с правильным расположением элементов выглядит так:
Все остальные теги, которые были указаны ранее в блоке про основные теги, могут свободно использоваться внутри тега<!DOCTYPE html> <html> <head> <meta> <link> <title></title> <style></style> </head> <body> <header></header> <main></main> <footer></footer> </body> </html>
<body> и тегах <header>, <main> и <footer> соответственно. Но есть несколько нюансов:
- блочные теги, такие как
<div>,<h1>,<ul>и<p>не могут находиться внутри строчного<span>; - заголовки
<h1>,<h2>и т. д. не могут находиться друг в друге, как и ссылка в ссылке<a>; - списки
<ul>и<ol>внутри абзаца<p>; - тег
<li>может находиться только внутри списков<ol>или<ul>, причём не допускается нахождение других элементов в списке отдельно. Т. е., нельзя написать<ul><div></div><li></li> … </ul>, но можно писать другие элементы в списке внутри тега<li>; - теги
<tr>и<td>используются только внутри<table></table>, причём гораздо лучше пользоваться тегами thead, tbody и tfoot для структурированности кода таблицы. То есть, это должно выглядеть следующим образом:<table> <thead> <td></td> … <tr></tr> … </thead> <tbody> <td></td> … <tr></tr> … </tbody> <tfoot> <td></td> … <tr></tr> … </tfoot> </table> - внутри
<title></title>можно писать только чистый текст, но нельзя выделить этот текст, например, жирным (неправильно:<title><b>Заголовок</b></title>)
Вёрстка. Пример HTML-документа
Давайте разберём пример HTML-документа:
Техническая информация<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Страница 1</title> </head> <body> <header> <h1 title=":)">Привет</h1> </header> <main> <h2>Основная часть</h2> <p>Текст</p> <a href="https://docs.djangoproject.com/" title="Сайт документации Django"> Ссылка </a> </main> <footer> <div>Подвал сайта</div> </footer> </body> </html>
<head>: здесь указана кодировка и настройка отображения под мобильные устройства, а также заголовок вкладки браузера с текстом "Страница 1".
Шапка сайта <header>: содержит заголовок <h1> со словом «Привет». При наведении на него всплывает смайлик ":)", так как указано в атрибуте title.
Основная часть <main>: содержит подзаголовок второго уровня <h2>, абзац <p> с текстом и ссылку <a> с подсказкой при наведении (снова атрибут title), которая ведёт на сайт документации Django.
Нижняя часть <footer>: содержит блок с текстом "Подвал"
Попрактикуйтесь в создании простых HTML-страниц для закрепления материала. Со временем вы запомните основные элементы и будете их использовать на автомате.Деплой. Сервис Beget
Если вы сделали свой сайт и хотите его выложить в сеть, то мы приступаем к заключительному этапу обучения. Сразу хочу предупредить: вы маловероятно найдёте бесплатный VPS-сервер и даже адекватный хостинг. Единственный хостинг, который имел бы место – PythonAnywhere, который попадает под блокировку в РФ, и, вдобавок, ваш сайт будет иметь поддомен pythonanywhere, что сделает ваш сайт тоже недоступным в РФ. Напомню, что деплой – это процесс размещения готового сайта на удалённый сервер, в нашем случае – на VPS-сервер. VPS-сервер – виртуальный сервер на одном компьютере, преимущества которого над обычным хостингом – независимость от других пользователей (так как сервер арендуется только одним человеком) и полный контроль над системой. Сервис, который предоставит нам такой сервер – Beget. Мой выбор на него упал по причине наличия готового софта для Django, включающего операционную систему Ubuntu, среду Python и сам фреймворк. Цены, конечно, неприятные (стали таковыми недавно), но я и не нашёл вариантов дешевле; что есть, то есть. Выделю плюсы Beget'а:
- наличие файлового менеджера, с помощью которого достаточно удобно делать корректировки в коде веб-приложения
- предоставление бесплатного доменного имени
- дешёвый IP-адрес
Деплой. Добавление сайта на сервер
Добавим папку с приложением на наш удалённый сервер. Для этого архивируем эту папку и через файловый менеджер добавляем её в директорию /var/www/. Теперь постепенно начнём изучать навыки работы с консолью. Я буду объяснять на примере Windows PowerShell.
Для начала подключися по IP к VPS. Для этого
Для начала подключися по IP к VPS. Для этого