Перечислите ключевые классы в Django и их назначение

Ответ

Django построен на наборе основных классов, которые формируют его MVT (Model-View-Template) архитектуру и предоставляют ключевой функционал:

  • Модели (Models)

    • django.db.models.Model — базовый класс для определения структуры данных приложения. Каждая модель сопоставляется с таблицей в базе данных, а ее атрибуты — с полями таблицы. Это основа ORM в Django.

      from django.db import models
      
      class Product(models.Model):
          name = models.CharField(max_length=200)
          price = models.DecimalField(max_digits=10, decimal_places=2)
  • Представления (Views)

    • django.views.View — базовый класс для обработки HTTP-запросов. Позволяет обрабатывать разные HTTP-методы (GET, POST и др.) с помощью отдельных методов класса (get(), post()).
    • django.views.generic.* (например, ListView, DetailView, CreateView) — классы-дженерики для выполнения типовых операций (отображение списка объектов, детальной информации, создание/редактирование), что значительно сокращает объем шаблонного кода.

      from django.views.generic import ListView
      from .models import Product
      
      class ProductListView(ListView):
          model = Product
          template_name = 'products/list.html'
  • Формы (Forms)

    • django.forms.Form — класс для создания, валидации и обработки HTML-форм, не связанных напрямую с моделями.
    • django.forms.ModelForm — подкласс Form, который автоматически создает поля формы на основе полей указанной модели Django, упрощая создание форм для CRUD-операций.
  • URL-маршрутизация

    • django.urls.path и django.urls.re_path — функции для определения маршрутов URL и их сопоставления с представлениями (views). Являются основой диспетчера URL Django.
  • Администрирование

    • django.contrib.admin.ModelAdmin — класс для настройки отображения и поведения моделей в стандартной административной панели Django. Позволяет кастомизировать списки, фильтры, поиск и формы редактирования.

Эти классы составляют ядро большинства Django-приложений.