Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 987новых вакансий за сутки·91 463вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 238
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python16 417
  • Облачные технологии13 174
  • QA вакансии3 433
  • Backend вакансии2 035
  • Инженер данных1 666
  • Продакт-менеджер1 162

Разработка

  • Android1 816
  • iOS1 666
  • AI вакансии937
  • Fullstack вакансии892
  • Frontend вакансии717
  • Mobile вакансии38

По стеку

  • Go8 561
  • Java6 090
  • Node.js1 889
  • Kotlin1 554
  • .NET1 545
  • Rust1 432
  • PHP640
  • C#562
  • C++498

DevOps и инфраструктура

  • Kubernetes7 303
  • DevOps вакансии5 594
  • Linux-инфраструктура5 291
  • Terraform / IaC4 014
  • CI/CD2 557
  • Мониторинг и Observability1 735
  • SRE548
  • Кибербезопасность398

Аналитика и данные

  • Data Scientist1 033
  • Бизнес-аналитик868
  • Аналитик данных829
  • Системный аналитик134

Другие направления

  • Проджект-менеджер524
  • UI/UX дизайн129
  • Ручное тестирование14

По регионам

  • Вакансии в США44 779
  • Вакансии в Европе21 327
  • Вакансии в Канаде4 450
  • Работа в России3 877

По формату

  • Удалённые вакансии73 902
  • Релокация в США44 794
  • Гибридная работа11 412
  • Офисная работа6 956

По уровню

  • Senior вакансии41 197
  • Middle вакансии20 361
  • Junior вакансии6 638

Сейчас нанимают

Все компании
  • Wise194 вакансии
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab136 вакансий
  • Celonis45 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме DjangoВсе вопросы
DjangoJuniorТеория

Что такое архитектура MTV (Model-Template-View) в Django и чем она отличается от MVC?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

MTV — это переименованный MVC: Model = данные, View = контроллер (обрабатывает запрос), Template = представление (HTML). Django добавляет URLconf для маршрутизации и Middleware для сквозной обработки.

Пример полного цикла запроса

# models.py
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    published_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title
# views.py
from django.shortcuts import render
from .models import Article

def article_list(request):
    # View обращается к Model
    articles = Article.objects.order_by("-published_at")[:10]
    # View передаёт данные в Template
    return render(request, "articles/list.html", {"articles": articles})
# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path("articles/", views.article_list, name="article-list"),
]
# articles/list.html (Template)
# {% for article in articles %}
#   <h2>{{ article.title }}</h2>
#   <p>{{ article.published_at }}</p>
# {% endfor %}

MTV в Django: Model, Template, View

Django использует паттерн MTV — Model, Template, View. По сути это тот же MVC, но с другими названиями и слегка другим распределением ответственностей. Разберём каждый слой.

Слои MTV

  • Model — описывает структуру данных и бизнес-логику. Соответствует M (Model) в MVC. Это классы, унаследованные от django.db.models.Model, которые Django транслирует в SQL-таблицы.
  • Template — HTML-шаблоны с языком шаблонов Django (DTL) или Jinja2. Отвечает за представление данных пользователю. Соответствует V (View) в MVC.
  • View — функция или класс, принимающий HTTP-запрос, обращающийся к моделям и возвращающий HTTP-ответ (обычно с отрендеренным шаблоном). Соответствует C (Controller) в MVC.

Сравнение с MVC

  • MVC Controller → Django View
  • MVC View → Django Template
  • MVC Model → Django Model

Отличие не в архитектуре, а в терминологии. В классическом MVC контроллер принимает запрос и управляет потоком; в Django этим занимается View. Django ещё добавляет слой маршрутизации через URLconf (urls.py), который разруливает запросы до вызова нужного View.

Поток запроса в Django

  • Браузер отправляет GET /articles/
  • Django WSGI/ASGI принимает запрос
  • Middleware обрабатывают запрос (аутентификация, сессии и т.д.)
  • URLconf сопоставляет путь и вызывает article_list
  • View запрашивает данные из Model через ORM
  • View рендерит Template с данными
  • Middleware обрабатывают ответ
  • Django возвращает HTTP-ответ браузеру

Class-Based Views

Помимо функциональных вьюх (FBV) Django поддерживает классовые (CBV) через django.views.generic:

from django.views.generic import ListView
from .models import Article

class ArticleListView(ListView):
    model = Article
    template_name = "articles/list.html"
    context_object_name = "articles"
    ordering = ["-published_at"]
    paginate_by = 10

Подводные камни

  • View в Django — это не View в MVC; путаница в терминах вводит в заблуждение разработчиков с опытом в Rails или Spring MVC.
  • Бизнес-логику часто кладут в View вместо Model или отдельного сервисного слоя — это затрудняет тестирование.
  • Django Template Language намеренно ограничен (нет произвольного Python-кода). Это хорошо для безопасности, но требует выносить логику в templatetags или в View.
  • CBV скрывают поток выполнения: метод dispatch() маршрутизирует по HTTP-методу, get_queryset(), get_context_data() переопределяются для кастомизации — без знания MRO легко потеряться.
  • URLconf — отдельная концепция, не входящая ни в M, ни в T, ни в V; её часто забывают при описании архитектуры.
  • Middleware ортогональны MTV и могут изменять запрос/ответ на любом этапе — это мощно, но добавляет неочевидные зависимости.

Частые вопросы на собеседовании

  • Как Django защищает от SQL-инъекций, CSRF и XSS-атак?
  • Как организовать настройки, secrets и environment-specific config без утечек?
  • Объясните жизненный цикл запроса/ответа в Django — от разрешения URL до HTTP-ответа.
  • Что такое проблема N+1 запросов в Django и как её обнаружить и исправить?

Типичные ошибки

  • Описывать mtv vs mvc только как термин и не показывать механизм на минимальном примере.
  • Игнорировать ошибки, пустые данные, конкурентный доступ или границы транзакции.
  • Не связывать поведение с официальным контрактом Django и реальной эксплуатацией.

Что проверяет интервьюер

  • Объясняет mtv vs mvc через последовательность действий, а не через набор ключевых слов.
  • Приводит короткий кодовый пример или production-сценарий с ожидаемым поведением.
  • Называет хотя бы один риск: производительность, безопасность, транзакции, память или сопровождение.

Как вы знаете этот вопрос?

Проверить себя по теме Django →

Источники

  • https://docs.djangoproject.com/en/5.2/topics/db/models/
  • https://docs.djangoproject.com/en/5.2/topics/http/views/
←Предыдущий вопросВ чём разница между `ForeignKey`, `OneToOneField` и `ManyToManyField`?Следующий вопрос→Как сравнить Django с ближайшими backend-альтернативами по скорости разработки, производительности, экосистеме и эксплуатации?

Связанные темы

Djangoapi-designtechnical-reasoning

Вакансии с этим навыком

  • Python Developer
  • Backend Software Engineer
  • Network Engineer – AlgoSec
  • Senior .NET Developer
  • Senior Front-End Developer (Angular)