Django — это высокоуровневый веб-фреймворк на языке Python, который упрощает создание сложных веб-приложений. Благодаря своим преимуществам, таким как встроенная ORM для работы с базами данных, мощная система администрирования и модульная архитектура, Django становится отличным выбором как для новичков, так и для опытных разработчиков. В этой статье мы рассмотрим пошаговое руководство по созданию сайта на Django, начиная с установки и заканчивая развертыванием.
Подготовка к разработке
Установка Python и Django
Перед началом разработки необходимо установить Python и Django.
-
Установите Python:
Скачать Python можно с официального сайта. Обязательно установите последнюю версию.
-
Установите Django:
После установки Python, откройте терминал и выполните команду:
pip install django
Настройка виртуального окружения
Виртуальное окружение позволяет изолировать зависимости вашего проекта. Для создания виртуального окружения используйте модуль venv.
# Создание виртуального окружения
python -m venv myenv
# Активируйте виртуальное окружение
# На Windows
myenv\Scripts\activate
# На macOS/Linux
source myenv/bin/activate
Создание первого проекта
Инициализация проекта
Создайте новый проект с помощью команды django-admin.
# Создайте новый проект
django-admin startproject myproject
Проект будет иметь структуру каталогов, которая включает файлы для настроек, URL-адресов и WSGI-конфигураций.
Запуск сервера разработки
Для проверки, что всё настроено верно, запустите сервер разработки:
python manage.py runserver
Перейдите по адресу http://127.0.0.1:8000/ в вашем браузере. Вы должны увидеть приветственное сообщение Django.
Создание приложения
Создание первого приложения
В Django проект делится на приложения — это удобно для повторного использования и организации кода.
python manage.py startapp myapp
Регистрация приложения в проекте
Добавьте созданное приложение в настройках проекта settings.py:
# myproject/settings.py
INSTALLED_APPS = [
...
'myapp',
]
Работа с базами данных
Настройка базы данных
Django поддерживает различные СУБД, такие как PostgreSQL, MySQL и SQLite. В настройках settings.py укажите параметры подключения к базе данных.
# myproject/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
Создание моделей
Создайте модели данных в файле models.py вашего приложения.
# myapp/models.py
from django.db import models
class Article(models.Model):
title: str = models.CharField(max_length=100)
content: str = models.TextField()
def __str__(self) -> str:
return self.title
Миграции
После создания моделей выполните команды для создания и применения миграций.
python manage.py makemigrations
python manage.py migrate
Создание пользовательского интерфейса
Настройка шаблонов
Создайте файлы шаблонов для отображения данных. В директории вашего приложения создайте папку templates и файл шаблона:
<!-- myapp/templates/index.html -->
<!DOCTYPE html>
<html>
<head>
<title>Home Page</title>
</head>
<body>
<h1>Welcome to My Site</h1>
</body>
</html>
Создание форм
Создайте формы на основе моделей для упрощения ввода данных.
# myapp/forms.py
from django import forms
from .models import Article
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title', 'content']
Работа с URL и представлениями
Настройка маршрутизации
Свяжите URL-адреса с представлениями.
# myapp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
Создание представлений
Создайте функции-представления для обработки запросов.
# myapp/views.py
from django.shortcuts import render
from .models import Article
def index(request):
articles = Article.objects.all()
return render(request, 'index.html', {'articles': articles})
Статические файлы и медиа
Для обслуживания статических файлов и медиа используйте соответствующие настройки:
# myproject/settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / 'static']
Тестирование приложения
Создание тестов
Пишите тесты для вашего приложения, чтобы удостовериться в корректности его работы.
# myapp/tests.py
from django.test import TestCase
from .models import Article
class ArticleModelTest(TestCase):
def test_str_method(self):
article = Article.objects.create(title='Test Title', content='Test Content')
self.assertEqual(str(article), 'Test Title')
Развертывание приложения
Подготовка к развертыванию
Убедитесь, что все настройки соответствуют боевому окружению. Например, настройте переменные окружения для секретных ключей.
Выбор хостинга
Некоторые популярные хостинги: Heroku, DigitalOcean, AWS.
Процесс развертывания
Следуйте инструкциям выбранного хостинга для развертывания вашего Django-приложения.
Заключение
Мы рассмотрели, как создать сайт на Django, начиная с установки и заканчивая развертыванием. Продолжайте изучать Django и веб-разработку, чтобы создавать ещё более сложные и интересные приложения.