Статьи

Фреймворки веб-разработки — часть 4: Django

Это часть моей серии обзоров веб-фреймворков . Проверьте это, если вы еще этого не сделали.

Переходя к Django , Python основан на всей звезде.

Django был создан людьми из Lawrence Journal-World и выпущен для публики в 2005 году. Он очень активен и имеет сильную группу последователей, в настоящее время фреймворк находится в версии 1.4, а последний выпуск был сделан в марте / 2012 ,

Для этого обзора я использовал Django 1.4 и Python 2.7 на рабочей станции на базе Fedora 17. Стоит отметить, что я почти полный новичок как в Python, так и в Django, чтобы освоиться, я следовал официальному учебнику по Django .

Установите фреймворк на рабочей станции разработки

И Python, и Django были предоставлены моим дистрибутивом linux во встроенных репозиториях, так что все, что мне нужно было сделать, это вытащить их, используя yum, и все было хорошо. Самая простая установка!

Настройка среды разработки с использованием бесплатной IDE, сервера приложений и базы данных

Подойдет любой текстовый редактор, я использую Sublime Text 2, но ваш выбор не повлияет на структуру ваших проектов и то, как их разрабатывать.

Разработайте «Hello world» или подобный пример, описанный в руководстве по фреймворкам

Учебник проведет вас через создание приложения веб-опросов, с пользовательскими и административными интерфейсами. На самом деле он начинается с раздела администратора (поскольку Django генерирует большую часть его автоматически), так что вам не потребуется 1 минута, чтобы получить Hello World! Учебное пособие по приложению », но за ним легко следовать, и, вероятно, лучше согласовать его с реальным приложением, чем со страницей, которая просто говорит что-то:

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

Есть вещи, которые я нахожу немного сложнее, чем нужно. Взять, к примеру, конфигурацию URL. В руководстве предлагается использовать следующий фрагмент в качестве основы для настройки URL:

1
2
3
4
5
6
7
urlpatterns = patterns('',
    url(r'^polls/$', 'polls.views.index'),
    url(r'^polls/(?P<poll_id>\d+)/$', 'polls.views.detail'),
    url(r'^polls/(?P<poll_id>\d+)/results/$', 'polls.views.results'),
    url(r'^polls/(?P<poll_id>\d+)/vote/$', 'polls.views.vote'),
    url(r'^admin/', include(admin.site.urls)),
)

Сравните это с конфигурацией эквивалентных маршрутов в Play Framework:

1
2
3
GET     /forms/:id            controllers.Forms.index(id: String, page: java.lang.Integer = 1)
GET     /forms/:id/:page      controllers.Forms.index(id: String, page: java.lang.Integer)
POST    /forms                controllers.Forms.save()

Я понимаю, что регулярные выражения более мощные, но потери читабельности и простоты использования не стоят имхо. Версия Django выглядит беспорядочно по сравнению с Play или Ruby on Rails.

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

Написание необработанного SQL на Django довольно просто, на самом деле чрезвычайно просто, если ваш запрос возвращает что-то, что вы можете сопоставить с одним из объектов вашей модели. Если нет, у вас все еще есть возможность выполнить собственное предложение SQL и выполнить итерацию по его результатам на основе курсора.

Добавьте зависимость в стороннюю библиотеку и выполните вычисления, используя ее в нашем приложении.

Сменные компоненты в Django называются приложениями, вы можете найти репозиторий в Django Packages . Включение приложения на ваш сайт несложно, хотя у меня возникает «ощущение», что они, как правило, связаны с сайтом чуть больше, чем библиотеки Java (JAR) или Ruby Gems.

Разработать REST-сервис «Hello world»

Несмотря на то, что Django не так ориентирован на REST, как Rails или Play, разработка REST-сервиса так же проста, как и «удобочитаемая». Я взял представление списка опросов из учебного примера и преобразовал его в службу, возвращающую вывод в формате JSON за несколько секунд, в основном изменив:

1
return render_to_response('polls/index.html', {'latest_poll_list': latest_poll_list})

в

1
return HttpResponse(serializers.serialize('json', latest_poll_list))

Используйте наш собственный сервис из нашего приложения

Сам Python предоставляет библиотеки, которые позволяют вам использовать REST-сервис и декодировать его вывод, чтобы попробовать его, я использовал urllib2 и json .

API — это то, что вы ожидаете от него: получите данные из HTTP-ресурса, а затем передайте их в анализатор JSON для получения матрицы ключ / значение.

оценка

Кривая обучения: СРЕДНЯЯ

Начать работать с Django совсем не сложно, и я уверен, что если вы знакомы с Python, это еще проще. Но, на мой взгляд, кривая обучения Django круче, чем RoR и Plays, и в то же время предоставляет схожие возможности и цели.

Разработка производительности для простых задач: MEDIUM

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

Разработка производительности для сложных / единичных задач: ХОРОШО

Делать нестандартные вещи в Django кажется естественным. Python — очень мощный язык с огромным количеством библиотек, и использование их в вашем приложении абсолютно не требует трений.

Управление зависимостями: MEDIUM

Проект Django называет его повторно используемые компоненты «приложениями», вы можете найти их в Django Packages . Использование приложения в вашем проекте не сложно, но оно кажется немного более связанным, чем должно.

Кроме того, в системе обработки приложений и управления версиями отсутствуют (или, по крайней мере, я их не нашел) некоторые функции, к которым вы привыкли, если вы работаете в RoR Gems или Maven в мире Java, такие как автоматическая обработка версий, управление развертыванием, профили и т. Д. ,

Возможности настройки производительности / безопасности кода: TBD

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

Тем не менее, я бы предпочел иметь некоторый реальный опыт развертывания приложений на основе Django и Python в производство, прежде чем судить об этом.

Возможности расширения / резервирования платформы: TBD

Проверьте предыдущий пункт, точно так же происходит и здесь со мной.

Принятие на корпоративных рынках: BAD

Python обычно звонит в корпоративную ИТ-среду чаще, чем Ruby, но ему еще предстоит пройти долгий путь, чтобы стать приемлемой основой для разработки и развертывания критически важных веб-приложений. Прямо сейчас в корпоративном мышлении Python — это хороший маленький скриптовый язык, на котором можно писать сценарии резервного копирования и даже какое-нибудь безопасное внутреннее веб-приложение, но не корпоративное решение для электронной коммерции или домашнего банкинга.

Сложность разработки и использования сервисов SOAP и REST: ХОРОШО

Не так много, чтобы добавить здесь к тому, что я уже говорил ранее, просто предоставлять и использовать веб-сервисы от Django. Python предоставляет базовые инструменты, и их совсем нетрудно использовать.

TL; DR

Django — это хороший и надежный веб-фреймворк, но, честно говоря, он ничего не дает, чтобы сделать его лучшим выбором, чем Ruby on Rails или Play. Тем не менее, это работает, это быстро и легко, поэтому, если вы закалены в Python или хотите быть, то ни в коем случае не сдерживайтесь и используйте Django.

С точки зрения нашей внутренней оценки, Django не является лучшим выбором, чем другие структуры, и на корпоративных рынках не считается добавленной стоимостью маркетинга.

Ссылка: Основы веб-разработки — часть 4: Django от нашего партнера по JCG