У вас включен AdBlock или иной блокировщик рекламы.

Пожалуйста, отключите его, доход от рекламы помогает развитию сайта и появлению новых статей.

Спасибо за понимание.

В другой раз
DevGang блог о програмировании
Авторизоваться

Как и почему мы используем Django

Первоначально howchoo был напсиан на PHP и Codeigniter, затем, в феврале 2015 года, мы полностью переключились на Django. Недавно на Reddit я отвечал на вопрос как раз об этой конкретной ситуации: «Мое приложение построено на PHP/Codeigniter, что будет если я перепишу его на Python/Django ?». Я дал краткий ответ, но решил немного подробнее объяснить, почему howchoo использует Django. Или, точнее, за что особенно мы любим Джанго.

Ответ «как» мы используем Django тесно связан с ответом «почему» мы используем Django. Проще говоря, мы используем Django из-за того, что он нам хорошо знаком и имеет массу функций, которые нам могут пригодиться. Конечно, я скоро подробнее расскажу об этих функциях.

При выборе веб-фреймворка и языка можно обращать внимания на несколько вещей - производительность, масштабируемость, устойчивость, сообщество, но я бы сказал, что знакомство с технологией имеет первостепенное значение. Вы, конечно, сблизитесь с любой структурой, которую выберете, но важно начать строить проект с того, с чем вы уже знакомы. Особенно если вы начинаете свой проект с парой парней, которые делают слишком много вещей. Как правило, за использование совершенно новой среды и языка приходиться платить. С учетом сказанного, иногда фреймворк настолько хорош, что стоит идти и на дополнительные расходы. В нашем случае мы были знакомы с Джанго и также считаем, что Джанго наиболее подходит для нашей задачи.

Чтобы обеспечить контекст для следующих тем, вы должны понимать, что важно для Howchoo. Если вы создаете приложение с совершенно другими приоритетами, это руководство может оказаться не таким полезным.

Быстрая загрузка страниц

Мы никогда не довольны временем загрузки нашей страницы. Они всегда будут слишком медленными, и мы всегда будем искать пути улучшения. Мы доставляем много контента большому количеству пользователей, и это должно произойти быстро.

Масштабируемость

Будучи издательской платформой, мы надеемся, что однажды достигнем 100 миллионов пользователей в месяц. Это много. И это также означает большое количество просмотров страниц. И поскольку мы начинали в команде всего из трех инженеров, мы не должны испытывать проблем при увелечении нагрузки. Мы не можем собрать 100 миллионов пользователей, или мы никогда не достигнем 100 тысяч.

Чистый Код как благочестие

Возможно это перебор, но мы все еще считаем полезным писать чистый и организованный код. Это также связано с масштабируемостью, так как нам будет легче масштабировать нашу команду разработчиков, если новые инженеры смогут быстро понять кодовую базу. Документы веб-фреймворка должны быть достаточной документацией для большинства наших приложений.

Ох, а теперь о мясе.

За что мы любим Джанго:

Модели и базы данных

Для начала Django использует модели даннных для создания вашей базы данных. Мне это нравится. Вы можете посмотреть на свою модель Django, чтобы увидеть, какие поля находятся в вашей таблице, и вам никогда не придется напрямую взаимодействовать с базой данных. А в более поздней версии Django (мы сейчас используем 1.7), чтобы обновить схему, вы просто модифицируете свою модель, производите миграции и запускаете миграции.

[add fields to model] ./manage.py makemigrations ./manage.py migrate


И если вы беспокоитесь о том, что придется на самом деле самому это делать, вы можете запустить это после makemigrations, чтобы просто распечатать SQL, который будет запущен (не запускать его).

./manage.py sqlmigrate

Кроме того, Django делает запрос к базе данных очень простым.

user = User.objects.get(id=1)

И обновление это проходит довольно весело.

user.first_name = "Tyler" user.save()

Конечно, большинство веб-фреймворков имеют как минимум функциональный уровень абстракции базы данных (я повторяю больше всего). А Django предоставляет средства для выполнения довольно сложных запросов - более сложных, чем обычно необходимо.

В целом, работа с базами данных не должна быть большой проблемой при создании веб-приложения. Последние версии Django делают управление вашей базой данных безболезненным.

Шаблонирование

Честно говоря, мне не всегда нравилось, как Django обрабатывает шаблоны. Подход заключается в том, что допустимо иметь некоторую логику в шаблонах (или много логики в шаблонах). Сначала меня это немного растроило. Это то, чтопридется использовать даже если и не очень то нужно. Впрочем, я использовал логику в шаблонах, и теперь начинаю думать, что все в порядке. И со временем я обнаружил, что система шаблонов Django более чем достаточна для нужд howchoo.

Маршрутизация

URL-маршрутизация в Django - отличное сочетание мощного и простого функционала. Самое главное, мне нравится, как в Джанго строятся urlpatterns. Файлы urls легко читаются и быстро реагируют на различные действия. Это огромное преимущество для такой неотъемлемой части приложения. Я видел некоторые фреймворки, где маршруты скрыты и немного загадочны. Это не хорошо.

Кэширование

Как говорилось ранее: howchoo изначально был встроен в PHP/Codeigniter. И да, Codeigniter обеспечивает встроенное кэширование страниц, но в конечном итоге это было причиной, по которой я начал пересаживаться на Django. Я знал, что кэширование страниц будет ОГРОМНОЙ частью нашей стратегии по сокращению времени загрузки страницы, и я хотел что-то мощное. С Django вы можете кэшировать части шаблона или всего представления с очень небольшими настройками. Это прекрасно.

Формы и ModelForm

Классы Django Form и ModelForm не красивые, но они достаточно просто и понятно работают. В самом простом случае, если вы используете ModelForm, вы получите работающую форму всего за несколько (менее 10) строк кода. Это включает в себя создание формы HTML, проверку и сохранение. Конечно, большинство форм не являются базовыми, но классы форм очень настраиваемы. Наши guide tool максимально расширяют классы форм, и мы прекрасно с ними работаем.

Перевод статьи: Why and how we use Django

#Python #Django
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться