Переходя к 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