Симфония просто обожает доктрину Doctrine, которая является объектно-реляционным проектором. Нет, это не я придумал такое выражение, это в википедии написан такой перевод для выражения Object-Relational Mapping или просто ORM. Чаще всего в интернете можно увидеть как раз сокращение ORM.
Наше представление views.py продолжает расти и в нем уже несколько методов, хотя в реальности оно пока ничего не умеет делать. Неужели в реальных приложениях представления растут до бесконечности? Если взглянуть на мой блог Flenov.info, то даже у него различных URL будет больше 20 штук, не считая админки и если поместить 20 методов в один файл, то работать с ним потом будет неудобно.
Конечно же вывод данных на страницу простой записью в Response не так уж и эффективно. При работе с сайтами нам чаще приходиться работать с HTML страницами и будет великолепно, если HTML и Python будут жить отдельно и даже в отдельных файлах. Как мы уже видели в предыдущей главе, в Django для этого используется паттерн MVT и HTML как раз должен жить в шаблонах, с которыми мы и познакомимся сейчас.
Начнем с самого начала. Запрос с сервера приходит на сервер и фреймворк должен как-то решить, какой код должен выполнить код. Django есть что-то типа таблицы маршрутизации, в которой вы можете указать для какого URL должна вызываться какое представление, и эта таблица находиться в файле urls.py. В этом файле вначале очень много комментариев, а самое вкусное находиться здесь:
Далеко не всегда получается написать идеальный код сразу же с первого шага. Даже после стольких лет работы программистом мне достаточно часто приходиться запускать редактор кода и начинать что-то набрасывать как черновик. Как и художники или писатели программистам очень часто приходиться делать какие-то наброски, прежде чем переходить к чистовой работе.
Я очень часто вижу разговоры в интернете о том, что тесты необходимы. Но когда дело доходит до реальных проектов все почему-то если и пишут что-то, то только реальные тесты методов и абстрагируются от всех зависимостей. Плюс тесты, которые тестируют конечный продукт.
Прежде чем мы начнем, мне придется все же познакомить вас с третьим слоном – представлением.
В первой части мы запустили наш первый Symfony сайт и совсем поверхностно познакомились с тем, как можно создать свой первый контроллер. Контроллеры - это классы или если упростить до минимума - код, который вызывается на действия пользователей на сайте. Он должен получать данные от пользователя, получать запросы и возвращать пользователям результат. Расчеты же обычно делаются в отдельном слое - Бизнес логика, о которой мы поговорим позже.
Эта тема мне далась очень сложно, потому что я не любитель всех этих точных определений и тем более не любитель дискутировать на эту тему. Очень часто сложно найти точное определение, поэтому я их просто не даю, а просто описываю вещи простым языком. И вот тут как раз очень часто люди придираются к моим словам, что я сказал что-то не точно и есть более точное определение. Еще раз повторю, что я против определений.
Я сам не фанат всех этих уроков за 25 минут, потому что даже за час невозможно дать полноценную информацию для того, чтобы можно было закончить разговор на какой-то хорошее ноте. Можно пробежаться галопом по Европе, но смысл?