Django: пошаговая инструкция создания сайта для начинающих

Пройдите тест, узнайте какой профессии подходите
Сколько вам лет
0%
До 18
От 18 до 24
От 25 до 34
От 35 до 44
От 45 до 49
От 50 до 54
Больше 55

Для кого эта статья:

  • Новички в веб-разработке, желающие освоить 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:

Python
Скопировать код
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 и определите модель для ваших статей:

Python
Скопировать код
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:

Python
Скопировать код
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 и добавьте следующий код:

Python
Скопировать код
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:

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>&copy; 2023 My Blog</p>
</footer>
</body>
</html>

Для связи представлений с URL-адресами создадим файл blog/urls.py:

Python
Скопировать код
from django.urls import path
from . import views

urlpatterns = [
path('', views.post_list, name='post_list'),
]

Теперь необходимо включить URL-шаблоны приложения в URL-шаблоны проекта. Откройте файл mysite/urls.py:

Python
Скопировать код
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:

Python
Скопировать код
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:

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>&copy; 2023 My Blog</p>
</footer>
</body>
</html>

Обновите файл blog/urls.py:

Python
Скопировать код
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'),
]

Теперь добавьте ссылки на детальные страницы в шаблон списка статей:

HTML
Скопировать код
<h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2>

Деплой Django-сайта: запуск проекта в интернете

После успешного создания сайта на локальном компьютере следующим шагом является его размещение в интернете, чтобы он стал доступен всем пользователям. Этот процесс называется деплоем (deployment). 🚀

Для деплоя Django-сайта есть несколько основных шагов:

  1. Подготовка проекта к продакшену
  2. Выбор хостинг-провайдера
  3. Настройка сервера
  4. Развертывание проекта
  5. Настройка домена и HTTPS

1. Подготовка проекта к продакшену

Сначала необходимо изменить настройки проекта для безопасной работы в продакшен-среде. Откройте файл mysite/settings.py и внесите следующие изменения:

Python
Скопировать код
# Устанавливаем 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

Также рекомендуется использовать переменные окружения для хранения секретных ключей и паролей:

Python
Скопировать код
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:

  1. Установите Heroku CLI и войдите в систему:
heroku login

  1. Создайте новое приложение Heroku:
heroku create mysite

  1. Добавьте PostgreSQL:
heroku addons:create heroku-postgresql:hobby-dev

  1. Настройте переменные окружения:
heroku config:set SECRET_KEY="your-secret-key"
heroku config:set DEBUG=False

  1. Инициализируйте git-репозиторий и сделайте коммит:
git init
git add .
git commit -m "Initial commit"

  1. Отправьте код в Heroku:
git push heroku master

  1. Выполните миграции:
heroku run python manage.py migrate

  1. Создайте суперпользователя:
heroku run python manage.py createsuperuser

  1. Соберите статические файлы:
heroku run python manage.py collectstatic --noinput

5. Настройка домена и HTTPS

Для профессионального сайта рекомендуется использовать собственный домен и HTTPS. В Heroku это можно сделать следующим образом:

  1. Купите домен у регистратора доменов (например, Namecheap, GoDaddy)
  2. Добавьте домен в Heroku:
heroku domains:add www.yourdomain.com

  1. Настройте DNS-записи у вашего регистратора доменов согласно инструкциям Heroku
  2. Включите автоматический HTTPS:
heroku labs:enable http-session-affinity

После завершения всех этих шагов ваш сайт будет доступен по указанному домену с защищенным HTTPS-соединением. 🔒

Создание сайта на Django с нуля — не магия, а последовательный процесс. От установки необходимых инструментов до запуска в продакшен, каждый шаг требует внимания к деталям. Ключом к успеху является понимание архитектуры Django: проекты содержат приложения, модели описывают данные, представления обрабатывают логику, а шаблоны формируют интерфейс. Освоив эти принципы, вы можете создавать как небольшие персональные блоги, так и масштабные веб-платформы. Главное — начать с малого и постепенно наращивать функциональность. 🚀

Читайте также

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Что такое Django?
1 / 5

Загрузка...