Перечислите ключевые классы в 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-приложений.

Ответ 18+ 🔞

Так, слушай, разберём эту вашу джаговскую кухню, как есть, без прикрас. Тут, в общем-то, всё на нескольких китах держится, и если их понять, то дальше уже не так страшно, хоть и муторно иногда.

Модели (Models) Вот смотри, есть у тебя база данных. Писать на SQL — это, конечно, круто, но долго и можно накосячить. Поэтому джанга даёт тебе вот эту штуку — django.db.models.Model. Это типа такой волшебный переводчик. Ты описываешь на Питоне, какую таблицу хочешь, а он уже сам там на SQL всё наколбасит. Красота же!

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=200)  # Поле для названия, строка, не больше 200 символов
    price = models.DecimalField(max_digits=10, decimal_places=2)  # Цена, с десятичными знаками, чтоб не обосраться с копейками

Объявил класс — и всё, считай, таблица готова. Остальное джанга сделает сама, ебать её в сраку, умная же!

Представления (Views) А это уже твои работнички, которые запросы от пользователей обрабатывают. Самый голый класс — django.views.View. Он как пустая болванка: ты говоришь, мол, если пришёл GET-запрос — вызывай метод get(), если POST — post(). Всё логично.

Но если лень каждый раз одно и то же писать (а лень — это двигатель прогресса, ёпта), есть дженерики. Это просто охуенно! Хочешь список товаров вывести? Пожалуйста — 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 — для кастомных форм, не привязанных к моделям. Но чаще нужна форма, чтобы данные сразу в модель запихнуть. Для этого есть django.forms.ModelForm — это просто магия, блядь. Ты ему модель показываешь, а он сам догадывается, какие поля нужны, как их валидировать и куда сохранять. Экономия времени — овердохуищная.

URL-маршрутизация А как браузер поймёт, какой запрос куда слать? Вот для этого у нас django.urls.path. Это как диспетчер на проходной. Пришёл запрос на адрес /products/ — отправляй его в ProductListView. Всё просто и прозрачно. Основа всей этой маршрутизационной движухи.

Администрирование И вишенка на торте — админка. django.contrib.admin.ModelAdmin. Это твой пульт управления. Настроил один раз — и можешь в красивой интерфейсной обёртке добавлять, удалять, искать и фильтровать записи в базе, даже не открывая её напрямую. Сидишь, как царь, и правишь своим цифровым царством-государством.

Вот они, основные киты. Собери их вместе правильно — и у тебя уже готовый каркас приложения, который только наполнять надо. Главное — начать, а там, глядишь, и втянешься.