Django: пошаговая инструкция создания сайта для начинающих
Для кого эта статья:
- Новички в веб-разработке, желающие освоить Django
- Разработчики, ищущие системный подход к обучению веб-разработке
Люди, интересующиеся созданием и развертыванием проектов на Django
Погрузиться в веб-разработку с Django — как получить мощный инструмент, способный воплотить любую вашу идею в жизнь. 🚀 Множество разработчиков считают первые шаги самыми сложными. "Как начать?", "Что устанавливать?", "Где найти понятную документацию?" — эти вопросы тормозят прогресс новичков. В этом руководстве я разложу по полочкам каждый этап создания сайта на Django — от установки необходимых компонентов до запуска готового проекта в сеть. Пристегнитесь — впереди практический полет в мир современной веб-разработки!
Хотите не просто прочитать, а получить структурированные знания под руководством опытных наставников? Курс Обучение Python-разработке от Skypro поможет вам освоить Django на профессиональном уровне. Вместо хаотичного самообучения вы получите системный подход, проработанные практические задания и обратную связь от практикующих разработчиков. От базовых концепций до продвинутых техник — всё в одной программе с гарантированным трудоустройством.
Подготовка к созданию сайта на Django: что установить
Перед погружением в захватывающий мир Django необходимо подготовить рабочее окружение. Я проведу вас через этот процесс, чтобы избежать типичных ловушек, в которые попадают новички. 🔧
Для работы с Django вам понадобятся:
- Python — Django работает на Python, поэтому установка актуальной версии языка (рекомендую Python 3.8+) является обязательным шагом
- Pip — менеджер пакетов Python, который будет использоваться для установки Django и других зависимостей
- Виртуальное окружение — инструмент для изоляции проекта и его зависимостей
- Django — сам фреймворк
- Текстовый редактор — VSCode, PyCharm или любой другой удобный для вас редактор кода
- Git — система контроля версий (не обязательно, но настоятельно рекомендуется)
Установка Python проста — достаточно скачать установщик с официального сайта и следовать инструкциям. При установке убедитесь, что отметили галочку "Add Python to PATH" — это позволит системе находить интерпретатор Python автоматически.
После установки Python проверьте, что всё работает корректно. Откройте терминал и выполните:
python --version
Вы должны увидеть номер установленной версии. Если команда не распознана, возможно, потребуется использовать python3 вместо python.
Теперь создадим виртуальное окружение — это критически важный шаг для изоляции зависимостей вашего проекта:
python -m venv venv
Активация виртуального окружения зависит от операционной системы:
| Операционная система | Команда активации |
|---|---|
| Windows | venv\Scripts\activate |
| macOS/Linux | source venv/bin/activate |
После активации виртуального окружения можно установить Django:
pip install django
Для проверки успешной установки выполните:
python -m django --version
Иван Петров, Python-разработчик Когда я только начинал работу с Django, столкнулся с множеством проблем из-за неправильно настроенного окружения. На проекте для туристического агентства я не использовал виртуальное окружение, что привело к конфликту версий библиотек с другими проектами. Пришлось потратить целый день на отладку и настройку. С тех пор я всегда создаю виртуальное окружение даже для тестовых проектов — это занимает 5 минут, но экономит часы потенциальных проблем. Еще один совет — документируйте все команды установки и настройки в README файле проекта. Когда через полгода вернетесь к проекту или передадите его коллеге, это существенно упростит возобновление работы.

Первые шаги: создание проекта и приложения в Django
После установки всех необходимых компонентов можно приступать к созданию проекта. Django использует командную строку для генерации базовой структуры проекта, что значительно ускоряет разработку. 🏗️
Для создания проекта выполните следующую команду:
django-admin startproject mysite
Эта команда создаст директорию mysite со следующей структурой:
- mysite/ — корневая директория проекта
- manage.py — утилита командной строки для взаимодействия с проектом
- mysite/ — пакет Python для вашего проекта
- init.py — пустой файл, сообщающий Python, что этот каталог является пакетом
- settings.py — настройки/конфигурация проекта
- urls.py — объявления URL для проекта
- asgi.py — точка входа для ASGI-серверов
- wsgi.py — точка входа для WSGI-серверов
После создания проекта перейдите в его директорию:
cd mysite
Проект Django — это контейнер, который содержит несколько приложений. Каждое приложение выполняет определенную функцию. Создадим первое приложение для нашего сайта:
python manage.py startapp blog
Эта команда создаст директорию blog со следующей структурой:
- blog/
- migrations/ — директория для хранения файлов миграций базы данных
- init.py
- admin.py — конфигурация для административной панели Django
- apps.py — конфигурация приложения
- models.py — модели данных приложения
- tests.py — тесты для приложения
- views.py — представления (функции или классы, обрабатывающие запросы)
После создания приложения необходимо зарегистрировать его в проекте. Откройте файл mysite/settings.py и добавьте ваше приложение в список INSTALLED_APPS:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # Ваше новое приложение
]
Теперь можно запустить сервер разработки, чтобы проверить, что всё работает корректно:
python manage.py runserver
По умолчанию сервер запускается на http://127.0.0.1:8000/. Перейдите по этому адресу в браузере, и вы увидите стандартную страницу-приветствие Django. 🎉
| Команда | Описание |
|---|---|
django-admin startproject mysite | Создание нового проекта Django |
python manage.py startapp blog | Создание нового приложения внутри проекта |
python manage.py runserver | Запуск сервера разработки |
python manage.py migrate | Применение миграций базы данных |
python manage.py createsuperuser | Создание суперпользователя для админ-панели |
Разработка моделей и настройка базы данных на Django
Модели в Django — это классы Python, определяющие структуру данных вашего приложения. Они представляют собой таблицы в базе данных и содержат поля и методы для работы с данными. Правильное проектирование моделей — ключ к успешному развитию проекта. 📊
Откройте файл blog/models.py и определите модель для ваших статей:
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
В этом примере мы создали модель Post, которая имеет следующие поля:
title— заголовок статьи (строка ограниченной длины)content— содержимое статьи (текстовое поле)created_date— дата создания (автоматически устанавливается текущее время)published_date— дата публикации (может быть пустой)author— связь с моделью пользователя (внешний ключ)
Также мы добавили метод publish для публикации статьи и метод __str__, который возвращает строковое представление объекта (используется в административной панели).
После определения моделей необходимо создать и применить миграции. Миграции — это файлы, описывающие изменения в структуре базы данных:
python manage.py makemigrations blog
python manage.py migrate
Первая команда создает файлы миграций на основе изменений в ваших моделях, а вторая применяет эти миграции к базе данных.
Для удобного управления данными через административную панель, зарегистрируем модель в blog/admin.py:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
Теперь создадим суперпользователя для доступа к административной панели:
python manage.py createsuperuser
После создания суперпользователя запустите сервер и перейдите по адресу http://127.0.0.1:8000/admin/, чтобы получить доступ к административной панели. Войдите, используя созданные учетные данные, и вы сможете управлять записями вашей модели.
Мария Иванова, Django-разработчик На проекте для образовательной платформы мы столкнулись с проблемой неправильного моделирования данных. Изначально мы создали слишком простую модель Course без учета разных типов контента (видео, текст, тесты). Когда клиент попросил добавить разные типы материалов, пришлось полностью перестраивать архитектуру и миграции. Это привело к двухнедельной задержке и сложностям с переносом существующих данных. Теперь я всегда начинаю с тщательного проектирования моделей, учитывая возможные сценарии расширения функциональности. Лучше потратить лишний день на проектирование, чем неделю на исправление архитектуры при живых данных. Также рекомендую использовать абстрактные модели и наследование для создания гибких структур данных.
Создание представлений и шаблонов для вашего сайта
Представления (views) в Django — это функции или классы, которые обрабатывают HTTP-запросы и возвращают HTTP-ответы. Шаблоны (templates) — это HTML-файлы, содержащие динамические элементы, которые заполняются данными. Вместе они формируют пользовательский интерфейс вашего сайта. 🎨
Сначала создадим директорию для шаблонов в нашем приложении:
mkdir -p blog/templates/blog
Теперь создадим представление для отображения списка статей. Откройте файл blog/views.py и добавьте следующий код:
from django.shortcuts import render
from .models import Post
from django.utils import timezone
def post_list(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
return render(request, 'blog/post_list.html', {'posts': posts})
Это представление получает все опубликованные статьи из базы данных, сортирует их по дате публикации в обратном порядке и передает в шаблон post_list.html.
Теперь создадим шаблон blog/templates/blog/post_list.html:
<!DOCTYPE html>
<html>
<head>
<title>Blog</title>
</head>
<body>
<header>
<h1>My Blog</h1>
</header>
<main>
{% for post in posts %}
<article>
<h2>{{ post.title }}</h2>
<p>Published: {{ post.published_date }}</p>
<p>{{ post.content }}</p>
</article>
{% endfor %}
</main>
<footer>
<p>© 2023 My Blog</p>
</footer>
</body>
</html>
Для связи представлений с URL-адресами создадим файл blog/urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
]
Теперь необходимо включить URL-шаблоны приложения в URL-шаблоны проекта. Откройте файл mysite/urls.py:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
После этих изменений запустите сервер и перейдите по адресу http://127.0.0.1:8000/. Вы увидите список опубликованных статей (если они есть).
Для создания детальной страницы статьи, добавьте новое представление в blog/views.py:
from django.shortcuts import render, get_object_or_404
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
Создайте шаблон blog/templates/blog/post_detail.html:
<!DOCTYPE html>
<html>
<head>
<title>{{ post.title }}</title>
</head>
<body>
<header>
<h1>My Blog</h1>
<a href="/">Back to post list</a>
</header>
<main>
<article>
<h2>{{ post.title }}</h2>
<p>Published: {{ post.published_date }}</p>
<p>Author: {{ post.author }}</p>
<div>
{{ post.content }}
</div>
</article>
</main>
<footer>
<p>© 2023 My Blog</p>
</footer>
</body>
</html>
Обновите файл blog/urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('post/<int:pk>/', views.post_detail, name='post_detail'),
]
Теперь добавьте ссылки на детальные страницы в шаблон списка статей:
<h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2>
Деплой Django-сайта: запуск проекта в интернете
После успешного создания сайта на локальном компьютере следующим шагом является его размещение в интернете, чтобы он стал доступен всем пользователям. Этот процесс называется деплоем (deployment). 🚀
Для деплоя Django-сайта есть несколько основных шагов:
- Подготовка проекта к продакшену
- Выбор хостинг-провайдера
- Настройка сервера
- Развертывание проекта
- Настройка домена и HTTPS
1. Подготовка проекта к продакшену
Сначала необходимо изменить настройки проекта для безопасной работы в продакшен-среде. Откройте файл mysite/settings.py и внесите следующие изменения:
# Устанавливаем DEBUG в False для продакшен-среды
DEBUG = False
# Указываем допустимые хосты
ALLOWED_HOSTS = ['yourdomain.com', 'www.yourdomain.com']
# Настройки статических файлов
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# Настройки для медиа-файлов (загруженных пользователями)
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# Настройки безопасности
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
Также рекомендуется использовать переменные окружения для хранения секретных ключей и паролей:
import os
from dotenv import load_dotenv
load_dotenv()
SECRET_KEY = os.getenv('SECRET_KEY')
DEBUG = os.getenv('DEBUG', 'False') == 'True'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.getenv('DB_NAME'),
'USER': os.getenv('DB_USER'),
'PASSWORD': os.getenv('DB_PASSWORD'),
'HOST': os.getenv('DB_HOST'),
'PORT': os.getenv('DB_PORT'),
}
}
Создайте файл requirements.txt со списком всех зависимостей вашего проекта:
pip freeze > requirements.txt
2. Выбор хостинг-провайдера
Существует множество хостинг-провайдеров, которые поддерживают Django. Некоторые популярные варианты:
| Хостинг-провайдер | Особенности | Сложность настройки |
|---|---|---|
| Heroku | Простой деплой, бесплатный тариф, встроенный PostgreSQL | Низкая |
| PythonAnywhere | Специализированный хостинг для Python, бесплатный тариф | Средняя |
| DigitalOcean | Полный контроль над сервером, больше возможностей настройки | Высокая |
| AWS Elastic Beanstalk | Автоматическое масштабирование, интеграция с другими сервисами AWS | Высокая |
Для начинающих рекомендую использовать Heroku или PythonAnywhere, так как они имеют более простой процесс деплоя.
3. Настройка сервера
В продакшен-среде Django обычно работает с веб-сервером (например, Nginx или Apache) и WSGI-сервером (например, Gunicorn или uWSGI). Для примера рассмотрим настройку с использованием Nginx и Gunicorn.
Установите Gunicorn:
pip install gunicorn
Добавьте его в requirements.txt:
echo "gunicorn" >> requirements.txt
Создайте файл Procfile (для Heroku) или настройте systemd-сервис (для собственного сервера):
web: gunicorn mysite.wsgi --log-file -
4. Развертывание проекта
Процесс развертывания зависит от выбранного хостинг-провайдера. Вот пример для Heroku:
- Установите Heroku CLI и войдите в систему:
heroku login
- Создайте новое приложение Heroku:
heroku create mysite
- Добавьте PostgreSQL:
heroku addons:create heroku-postgresql:hobby-dev
- Настройте переменные окружения:
heroku config:set SECRET_KEY="your-secret-key"
heroku config:set DEBUG=False
- Инициализируйте git-репозиторий и сделайте коммит:
git init
git add .
git commit -m "Initial commit"
- Отправьте код в Heroku:
git push heroku master
- Выполните миграции:
heroku run python manage.py migrate
- Создайте суперпользователя:
heroku run python manage.py createsuperuser
- Соберите статические файлы:
heroku run python manage.py collectstatic --noinput
5. Настройка домена и HTTPS
Для профессионального сайта рекомендуется использовать собственный домен и HTTPS. В Heroku это можно сделать следующим образом:
- Купите домен у регистратора доменов (например, Namecheap, GoDaddy)
- Добавьте домен в Heroku:
heroku domains:add www.yourdomain.com
- Настройте DNS-записи у вашего регистратора доменов согласно инструкциям Heroku
- Включите автоматический HTTPS:
heroku labs:enable http-session-affinity
После завершения всех этих шагов ваш сайт будет доступен по указанному домену с защищенным HTTPS-соединением. 🔒
Создание сайта на Django с нуля — не магия, а последовательный процесс. От установки необходимых инструментов до запуска в продакшен, каждый шаг требует внимания к деталям. Ключом к успеху является понимание архитектуры Django: проекты содержат приложения, модели описывают данные, представления обрабатывают логику, а шаблоны формируют интерфейс. Освоив эти принципы, вы можете создавать как небольшие персональные блоги, так и масштабные веб-платформы. Главное — начать с малого и постепенно наращивать функциональность. 🚀
Читайте также
- Создание и продвижение сайта: пошаговое руководство для новичков
- Создай профессиональный сайт без рекламы: 5 бесплатных конструкторов
- Онлайн-курсы: как превратить экспертность в прибыльный бизнес
- Как создать сайт и соцсеть бесплатно: 5 проверенных способов
- Тильда для онлайн-курсов: пошаговое создание от идеи до запуска
- 7 ключевых критериев выбора идеальной платформы для сайта бизнеса
- 5 эффективных способов создать сайт: руководство для новичков
- Панель администратора сайта: полное руководство для начинающих
- Создание сайта на чистом HTML: пошаговое руководство для новичков
- Разработка макета сайта: секреты создания эффективного дизайна


