Ответ
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. Это твой пульт управления. Настроил один раз — и можешь в красивой интерфейсной обёртке добавлять, удалять, искать и фильтровать записи в базе, даже не открывая её напрямую. Сидишь, как царь, и правишь своим цифровым царством-государством.
Вот они, основные киты. Собери их вместе правильно — и у тебя уже готовый каркас приложения, который только наполнять надо. Главное — начать, а там, глядишь, и втянешься.