Конфигуратор для web разработчиков на python(django), ruby(ror) and php


Содержание

Почему стоит выбрать Ruby on Rails для разработки веб-приложения или сайта?

Раз­ра­ботку веб-про ­ек­тов на теку­щий момент эко­но­ми­че­ски целе­со­об­разно вести на одном из сле­ду­ю­щих язы­ков: PHP, Java, Ruby, а также на Python и на базе. NET (это муль­ти­я­зыч­ный фрейм­ворк). И каж­дый из язы­ков имеет далеко не по одному фрейм­ворку, напи­сан­ному на нём. Так в чём же пре­иму­ще­ства выбора языка про­грам­ми­ро­ва­ния Ruby и фрейм­ворка Ruby on Rails с точки зре­ния бизнеса?

Сразу ого­во­рюсь, что мы не будем рас­смат­ри­вать преимущества языка программирования Ruby и фрейм­ворка Ruby on Rails с точки зре­ния раз­ра­бот­чи­ков, тут всё доста­точно оче­видно — они доста­точно мощ­ные и раз­ра­бот­чики их любят.

А вот с точки зре­ния биз­неса раз­ра­ботка на RoR весьма эффек­тивна по сле­ду­ю­щим при­чи­нам:

  • Высо­кая ско­рость раз­ра­ботки — про­екты на Рель­сах раз­ра­ба­ты­ва­ются дей­стви­тельно быст­рее ана­ло­гов на PHP или на Java, это под­твер­ждает и наш опыт, и опыт наших кол­лег по цеху. Обу­слов­лено это как тех­ни­че­скими осо­бен­но­стями фрейм­ворка (напри­мер, про­ду­ман­ные согла­ше­ния упро­щают кон­фи­гу­ра­цию) и инстру­мен­тами для раз­ра­ботки (кон­соль­ные ути­литы и гене­ра­то­ры, гото­вые биб­лио­те­ки, рас­ши­ре­ния и модули). Время раз­ра­ботки — это деньги Заказ­чи­ка, чем больше вре­мени зани­мает раз­ра­ботка — тем она доро­же.
  • Слож­ная биз­ нес-логика проще и про­зрач­нее реа­ли­зу­ется — кон­вен­ции напи­са­ния про­грамм­ного кода на базе Rails поз­во­ляют писать дей­стви­тельно понят­ный про­грамм­ный код, кото­рый впо­след­ствии может быть без про­блем моди­фи­ци­ро­ван в адек­ват­ные сро­ки, а соблю­де­ние этих кон­вен­ций делает про­грамм­ный код сопро­вож­да­е­мым не только изна­чаль­ным раз­ра­бот­чи­ком, но и любым дру­гим спе­ци­а­ли­стом или любой дру­гой коман­дой. Отсут­ствие при­вязки к изна­чаль­ному раз­ра­бот­чику — это очень важ­ная состав­ля­ю­щая про­ек­та, раз­ра­ба­ты­ва­е­мого Заказ­чи­ком силами внеш­ней ком­па­нии, а не соб­ствен­ными сила­ми.
  • Высо­кая надёж­ность и сопро­вож­да­е­мость реше­ний — в Rails-раз ­ра­ботке обычно используется TDD-подход , что делает созда­ва­е­мые реше­ния более ста­биль­ными и сопро­вож­да­е­мыми. Функ­ци­о­наль­ность самого фрейм­ворка также покрыта авто­ма­ти­че­скими теста­ми, что делает его исполь­зо­ва­ние дей­стви­тельно надёж­ным — есть уве­рен­но­сть, что ничего не сло­ма­ет­ся. Для биз­ нес-систем эта состав­ля­ю­щая крайне важна — от ста­биль­но­сти работы при­ло­же­ния часто зави­сит эффек­тив­ность работы биз­неса в целом.
  • Мас­шта­би­ру­е­мо­сть, про­из­во­ди­тель­ность и высо­кие нагрузки — фрейм­ворк «зато­чен» под раз­ра­ботку при­ло­же­ний, к кото­рым предъ­яв­ля­ются высо­кие тре­бо­ва­ния к доступ­но­сти: Rails-при ­ло­же­ния отлично раз­во­ра­чи­ва­ются и рабо­тают в кла­сте­рах сер­ве­ров или в «обла­ках». Для веб-сер ­ви­сов это очень важ­ный кри­те­рий, так как для соб­ствен­ной эффек­тив­но­сти и для при­вле­ка­тель­но­сти в гла­зах поль­зо­ва­теля они должны обла­дать серь­ёз­ным аптай­мом и хоро­шей ско­ростью рабо­ты.
  • Ком­пе­тент­ные раз­ра­бот­чики — доля хоро­ших про­грам­ми­стов на Ruby гораздо выше, чем в мире PHP. Это опять же а осно­ва­нии кол­лек­тив­ного опыта — у нас на собе­се­до­ва­ниях раз­ра­бот­чи­ков на PHP по при­чине низ­кого уровня зна­ний отсе­и­ва­ется больше 90% соис­ка­те­лей, для Ruby-про ­грам­ми­стов этот пока­за­тель суще­ственно ниже. Чем ком­пе­тент­нее раз­ра­бот­чики, тем быст­рее (дешевле) раз­ра­ба­ты­ва­ется про­ект и тем он более про­ду­ман, мас­шта­би­руем и надё­жен.

Мы раз­ра­ба­ты­ваем слож­ные сайты и веб-при ­ло­же­ния на Ruby on Rails — эта плат­форма очень хорошо заре­ко­мен­до­вала себя в сег­менте созда­ния тех­ни­че­ски слож­ных веб-про ­ектов, к кото­рым предъ­яв­ля­ются серь­ёз­ные тре­бо­ва­ния.

PHP vs Python vs Ruby для разработки веб-приложений: подробное сравнение

Адаптированный перевод этой статьи.

PHP, Python или Ruby-on-Rails (RoR): какой язык лучше для разработки веб-приложений в 2020 году?

Это один из наиболее обсуждаемых вопросов среди веб-программистов, студентов и компаний, интересующихся разработкой собственных сайтов. На самом деле, у каждого языка есть плюсы и минусы, преимущества и недостатки. Они полностью определяются вашими требованиями к разработке веб-приложений.

С помощью этого поста должны проясниться многие сомнительные моменты, связанные с этими языками программирования. Таким образом, вы сможете выбрать наиболее подходящий язык в соответствии со спецификой ваших потребностей и запросов. Детальный и всесторонний сравнительный анализ трёх наиболее популярных языков, а именно PHP vs Python vs Ruby (RoR), опираясь на статистические данные и данные по различных параметров. Итак, начнём поединок самых популярных языков программирования.

1. PHP vs Python vs Ruby: доля рынка

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

Победитель – PHP

2. PHP vs Python vs Ruby: сайты, созданные с их помощью

У PHP много известных клиентов, таких как Wikipedia, Facebook, PixelCrayons – и это только немногие из них. С другой стороны,

Ruby-on-Rails также обслуживает известных клиентов, в том числе Twitter, Hulu, Groupon, и т.д. И наконец, король поисковых систем Google, а также YouTube созданы на языке Python.

Победитель – «ничья»

3. PHP vs Python vs Ruby: юзабилити

Юзабилити – это один из важнейших факторов, влияющих на выбор языка программирования для разработки проекта вашего сайта. Практически все языки программирования формируют пользовательский интерфейс. Язык с высоким уровнем юзабилити делает возможной разработку более мощного, масштабируемого и высокопроизводительного программного обеспечения. Ниже приведена сравнительная характеристика юзабилити языков PHP, Python, и Ruby.

Победитель – Ruby-on-Rails (RoR)

4. PHP vs Python vs Ruby: кривая обучаемости

Простота обучения или «кривая обучаемости» — это ещё один важный параметр, который также учитывается при выборе языка программирования для профессионального роста или следующего проекта по разработке веб-приложений. Язык с высокими значениями кривой обучаемости лёгкий для понимания и содержит чистый исходный код. Из трёх рассматриваемых языков лучшая кривая обучаемости у Python, на втором месте PHP, на третьем — Ruby-on-rails.

Победитель — Python

5. PHP vs Python vs Ruby: сравнение популярности

Вне всякого сомнения, сегодня наиболее популярный в мире язык программирования – это PHP. Будучи одним из самых старых языков, PHP приобрёл много поклонников среди кодировщиков и большую клиентскую базу. Два других языка, т.е. Ruby и Python, относительно молодые, и, соответственно менее популярны в массах. На изображении внизу показан индекс TIOBE, который создан и поддерживается корпорацией TIOBE, основанной в Нидерландах. Индекс оценивает уровень популярности различных языков программирования.

Ниже интересное видео, в котором описывается преимущество PHP над Python при оценке уровня популярности:

Победитель — PHP

6. PHP vs Python vs Ruby: сравнение производительности

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

Победитель – Ruby и PHP

7. PHP vs Python vs Ruby: наиболее обсуждаемый язык

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

Победитель — Python

8. PHP vs Python vs Ruby: наличие вакансий и размер заработной платы

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

Победитель — PHP

9. Дополнительная информация.

Рассмотрим другие важные данные об этих трёх языках:

10. PHP vs Python vs Ruby: «плюсы» и «минусы»

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

PHP vs Python vs Ruby: преимущества

PHP Ruby Python
Бесплатное программное обеспечение по лицензии PHP Кроссплатформенность и открытый исходный код Лёгкий и быстрый в изучении
Лёгкий в освоении (высокая скорость обучения) Может быть встроен в язык разметки гипертекста Поддерживается множеством платформ и операционных систем
Крупное сообщество пользователей и разработчиков Язык программирования сверхвысокого уровня (VHLL) Читабельный и организованный синтаксис
Расширенная поддержка баз данных Простой и понятный синтаксис, позволяющий начинающему разработчику очень быстро изучить язык Обеспечение быстрого прототипирования и динамических семантических свойств
Предоставляет большое количество доступных расширений и исходных кодов Простое подключение к базам данных DB2, MySQL, Oracle и Sybase Огромное сообщество поддержки
Разрешает исполнение кода в ограниченных средах выполнения Созданные на Ruby большие масштабируемые программы просты в сопровождении Простое построение приложений путём тестирования и импорта необходимых функций
Предоставляется возможность управления нативными сессиями и расширения API Наличие встроенного отладчика и гибкого синтаксиса Реюзабилити (возможность повторного использования) за счёт тщательной разработки пакетов и модулей
Хорошая альтернатива конкурентам, таким как ASP (Active Server Pages) от Microsoft Возможность написания внешних библиотек на Ruby или C Объектно-ориентированный подход к программированию
Работает практически на любой операционной системе или платформе Возможность написания многопоточных приложений с простым API

PHP vs Python vs Ruby: недостатки

PHP Ruby Python
Не подходит для разработки настольных приложений Возможны трудности в изучении Недостаточно эффективная работа с многоядерными и многопроцессорными вычислительными системами
Традиционно скудный функционал для обработки ошибок Нехватка информационных ресурсов Ограниченный уровень доступа к базам данных
Глобальные параметры конфигурации могут менять семантику языка, осложняя процессы внедрения и совместимости Большие затраты процессорного времени (CPU time) по сравнению с другими языками Отсутствие коммерческой поддержки даже для Open Source проектов (однако, эта ситуация начинает меняться)
Обращение к объектам по умолчанию осуществляется методом «вызова по значению» (CallByValue), что противоречит аналогичным операциям для большинства языков и застаёт многих программистов врасплох Сравнительно медленная разработка обновлений Небольшое количество разработчиков Python по сравнению с другими языками, например с Java
В целом считается менее защищённым по сравнению с другими языками программирования По отзывам более медленный по сравнению с языками типа Java


Ниже представлено интересное видео на тему сравнения PHP, Python, и Ruby on Rails. Это видео многое прояснит для вас. Посмотрите его:

Заключение.

Приведённые выше факты и статистические данные помогут вам сделать правильный выбор языка программирования в соответствии с конкретными потребностями вашей деятельности.

В чем принципиальная разница RoR и Python (Django)?

После работы на чистом «Си» решил для себя идти в дотНет направлении, но никак не получается, не выходит. Два дня назад было 9-тое собеседование в котором я понял что просто не тяну. Реально дотНет очень большой, всегда найдется момент о котором ты не знаешь на котором тебя обязательно поймают, после чистого «Си» этот C# имеет очень много всяких «финтифлюшек» в которых просто теряешься, не в обиду дотНетчикам но всякого мусора в C# просто навалом. Конечно я когда прошел кучу собеседований я познал много всяких тонкостей о которых не знал но всё равно, слишком много всего ! Я не знаю как там в Java но дотНет очень большая платформа, для меня это сложно, видать не тот мозг ! Уйду в Ruby или Python, хотя говорят что это для тех кто «неасилил» C#\Java наверно оно так и есть ! Последний надеюсь мой вопрос к вам коллеги : если строить web-приложение принципиальная разница есть между RoR или Python(Django) как по мне всё очень похоже! Спасибо всем, счастья, добра, удачи.

3 ответа 3

Важная ремарка. Данный ответ не является ответом на вопрос. Это еще один комментарий к ответу пользователя @Jarto. Пишу как ответ в силу того, что возможность комментировать вопрос пропала. Поэтому, если есть возможность, прошу перенести его в комментарии.

а чего такого в Ubuntu домохозяйкам не хватает-то?

@pirj начнем с того, что операционные системы используются не только домохозяйками. Это было лишь некоторое обобщение. Очень широкий сектор их использования — корпоративный. А потому помимо обычных пользователей (домохозяек, домохозяинов, студентов, пенсионеров и всех-все-всех) есть еще всяческие служащие, менеджеры, бухгалтеры, для которых компьютер является рабочим инструментом (не буду относить сюдя айтишников — среди них распространение линукса довольно велико, но они в отличие от служащих и просто пользователей не исчисляются сотнями миллионов)

Так вот. Почему же не Linux:

  1. MS Office. Да, я знаю, что есть Open Office, Libre Office и что-нибудь еще. Но главенствующую роль все же занимает именно продукт Microsoft, а все остальные, хорошо это или плохо, вынуждены под него подстраиваться. Даже если вы внутри своей компании полностью откажетесь от использования MS Office, заставить другие компании сделать то же самое вы не сможете. А уж обмен всяческой документацией между теми или иными компаниями, фирмами, ведомствами — дело самое обычное. Не будете же вы требоватьот какого-нибудь банка/налоговой/службы безопасности присылать вам документы в формате odt.
  2. Привычка. Отучить десятки миллионов пользователей от Windows и приучить к Linux — задача непростая. Даже если ваша супруга с ней может справиться, не факт, что с ней справятся сотни (или хотя бы десятки) миллионов других людей. Да, Ubuntu смогла повернуться лицом к пользователю, и не выглядит как эротическая мечта красноглазого линуксоида, но дьявол, как известно, кроется в деталях. А смириться с этими деталями многим непросто.
  3. Игры (не самая важная, но довльно значимая причина). Что бы там ни говорили про портирование Доты и всяческие похвальные начинания от Valve, Linux даже близко не является игровой осью. На нем нет ни одного классного и коммерчески успешного эксклюзива (если даже я ошибаюсь, то их единицы), те хорошие игры, что есть, являются в основном портами, и портируются в лучшем случае ненамного позднее их выхода на Win. И это при том, что Windows сама по себе не очень может похвастаться изобилием. Я уже не говорю про довольно хреновую ситуацию с драйверами видеокарт — насколько мне известно, производительность одних и тех же моделей видеокарт отличаются в худшую сторону на Linux по сравнению с их аналогами, работающими из-под Windows. Я уже не говорю, что всяческие конфигурации, когда на ноутбуке стоят встроенная и дискретная видеокарты, заставляют пользователя плясать с бубном, чтобы заставить работать дискретную карту.
  4. На большинство компьютеров при покупке уже предустановлена Windows. Является ли это происками злыдней из компании Макрософак, или карой Всевышнего за наши земные грехи, но это факт.
  5. Практически полное отсутствие рекламы. А она, как известно, двигатель торговли. Если спросить у не-айтишников, почему бы им не поставить Linux, подавляющее большинство из них ответит «А что это?»
  6. И наконец, самая главная причина. ЗАЧЕМ? Что такого сулит простому пользователю Linux, ради чего он сломя голову бросится его устанавливать? Как известно, от добра добра не ищут (даже если это «добро» — Windows). Пользователь в основной своей массе ленив, и ему это просто не нужно.

Конфигуратор для web разработчиков на python(django), ruby(ror) and php

Хочу сказать несколько слов о проекте, которым занимаюсь в последнее время.

uwsgiconf — пакет, позволяющий вам конфигурировать uWSGI в терминах языка Python.

Илон Маск рекомендует:  Статьи, обзоры

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

Наверное, поэтому многие используют uWSGI исключительно в качестве сервера приложений для Python (пример из документации Django). В то время как он предоставляет:

  • Кеширование;
  • Логирование;
  • Блокировки;
  • Маршрутизацию;
  • Средства мониторинга;
  • Очередь;
  • HTTP2;
  • Веб-сокеты;
  • Оповещения;
  • «Удешевление»;
  • Планировщик типа cron и таймеры;
  • Механизм анонсирования и подписок;
  • Поддержку Lua, Ruby, PHP, Perl, ASP (Mono), Go (gcc), JVM.
  • Вызов удалённых процедур;
  • и пр.

Чтобы во всём этом было легче ориентироваться, а также повысить степень переносимости uWSGI конфигураций я начал проект uwsgiconf.

Что в нём хорошего:

  • Позволяет описать конфигурации uWSGI в терминах классов и методов Питона;
  • Использует строки документации и описание типов в них. Предполагается, что вы используете среду разработки с возможностью вывода подсказок к классам и методам, а также автодополнением.
  • Содержит некоторые предустановки (presets) с разумными параметрами по умолчанию, чтобы уменьшить количество кода, необходимого для конфигурирования;
  • Поощряет повторное использование конфигураций;
  • Предоставляет интерфейс командной строки, для удобного применения конфигураций.
  • Приятным дополнением является встроенный модуль-имитатор uwsgi , с описанием доступных функций, который можно использовать вместо import uwsgi .

На данный момент uwsgiconf покрывает далеко не все возможности uWSGI, но базовая часть опций уже доступна.
Проект разрабатывается открыто — uwsgiconf, желающие приглашаются к участию в его развитии.

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

Почему Django — лучший фреймворк для разработки сайтов

Django считается лучшим веб-фреймворком, написанным на Python. Этот инструмент удобно использовать для разработки сайтов, работающих с базами данных. Из этой статьи вы узнаете о Django и поймёте, почему это ключевое звено в экосистеме Python.

Прошлое и будущее фреймворка Django: краткий экскурс в историю

Django создали разработчики издания Lawrence-Journal World. Этой газете понадобился сайт, чтобы публиковать новости в интернете. Программисты Эдриан Головатый и Саймон Виллисон создали веб-приложение и сделали его публичным.

Вокруг Django быстро сформировалось активное сообщество. Фреймворк стал стремительно развиваться усилиями волонтёров. Значительную роль в успехе Django сыграли несколько известных сайтов, которые использовали этот фреймворк. В их число входят Pinterest, Dropbox, Spotify, сайт The Washington Post. В настоящее время сообщество Django включает более 11 тыс. разработчиков из 166 стран мира.

Эти сайты используют Django

Справка: русскоязычные разработчики и пользователи часто используют такой вариант написания: «Джанго». Будьте готовы к этому, если встретитесь с этим вариантом в обсуждениях или профессиональной переписке. Кстати, у нас есть краткий словарь профессионального сленга программистов.

В Django реализован принцип DRY (don’t repeat yourself). Благодаря этому сокращается время создания сайтов. То есть при использовании Django вам не нужно несколько раз переписывать один и тот же код. Фреймворк позволяет создавать сайт из компонентов. Это можно сравнить со строительством крепости с помощью Lego.

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

Почему MVT архитектура важна для веб-приложений на Django: разделение и независимое использование уровней

Фреймворк Django написан на языке программирования Python, поэтому его структура соответствует особенностям языка. Создатели реализовали в Django паттерн MVC, и он применяется в текущей версии фреймворка.

Архитектура MVC позволяет разработчику работать с визуальным представлением и бизнес-логикой приложения отдельно. Кстати, при работе с Django специалисты чаще используют термин MVT — Model-View-Template или модель-представление-шаблон. Компоненты MVT можно использовать независимо друг от друга.

Схема архитектуры MVT в Django

Документация Django определяет модель (model) как «источник информации о данных, в которых содержатся ключевые поля и поведение данных». Обычно одна модель указывает на одну таблицу в базе данных. Django поддерживает базы данных PostgreSQL, MySQL, SQLite и Oracle.

Модели содержат информацию о данных. Эти данные представлены атрибутами или полями. Поскольку модель представляет собой простой класс, она ничего не знает о других уровнях Django. Взаимодействие между уровнями происходит через API.

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

Представление (view) решает три задачи: принимает HTTP-запросы, реализует бизнес-логику, определённую методами и свойствами, отправляет HTTP-ответ в ответ на запросы. То есть представление получает данные от модели и предоставляет шаблонам (templates) доступ к этим данным или предварительно обрабатывает данные и затем предоставляет к ним доступ шаблонам.

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

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

Какие задачи можно решать с помощью Django: движки для сайтов, CRM, machine learning

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

Справка: название фреймворка подчёркивает его многогранность. Он назван в честь известного джазового гитариста Джанго Рейнхардта. Этот музыкант виртуозно играл на гитаре, хотя два пальца на его левой руке не функционировали после травмы, полученной во время пожара. То есть музыканту приходилось брать аккорды тремя пальцами.

Фреймворк Django справляется с большим количеством задач и повышенными нагрузками. Его применяют для создания:

  • CRM-систем.
  • CMS.
  • Коммуникационных платформ.
  • Сервисов бронирования номеров.
  • Платформ управления документооборотом.


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

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

Почему Django — отличный фреймворк для веб-разработки: экосистема, SEO, библиотеки

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

Развитая экосистема

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

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

Зрелость

Django был представлен в 2005 году. За 14 лет существования он сильно изменился и усовершенствовался. В фреймворке постоянно появляются новые возможности, а старые совершенствуются.

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

Административная панель

Административная панель Django автоматически генерируется при создании приложения. Это избавляет разработчика от необходимости создавать админку вручную.

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

SEO-дружественность

Написанный на Python код получается читабельным и понятным даже неподготовленным людям. Это один из факторов, благодаря которым веб-приложения на Python считаются SEO-дружественными. Django генерирует семантические URL. Их также называют человеко-понятными URL или ЧПУ. В приложениях на Django легко реализуются другие функции, необходимые для поисковой оптимизации.

Расширяемость

Функциональность Django расширяется с помощью плагинов. Это программные модули, которые позволяют быстро добавить на сайт нужную функцию. В официальном каталоге есть сотни плагинов, которые позволяют легко реализовать на сайте sitemap.xml, управлять доступами, подключить платёжную систему Stripe и так далее. При необходимости вы можете отключать или заменять плагины, чтобы адаптировать приложение к текущим нуждам проекта.

Библиотеки

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

Django поддерживает использование библиотек при разработке веб-приложений. В число популярных библиотек входят:

  • Django REST Framework, который упрощает работу с API.
  • Django CMS — удобный инструмент для управления контентом.
  • Django-allauth — с его помощью реализуются функции регистрации, авторизации, управления учётными записями.

В Django реализовано объектно-реляционное отображение (ORM), которое обеспечивает взаимодействие приложения с базами данных (БД). ORM автоматически передаёт данные из БД, например, PostgreeSQL или MySQL, в объекты, которые используются в коде приложения.

Схема работы ORM

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

Также ORM позволяет быстро переключаться между базами данных с минимальными изменениями кода. Например, вы можете использовать SQLite на локальном сервере, а потом переключиться на MySQL на production-сервере. Однако для минимизации ошибок лучше использовать одну базу данных во время разработки и в продакшене.

Недостатки Django: не для маленьких проектов, не всегда предсказуемое поведение

У Django есть недостатки, как у любого инструмента. Основные недостатки фреймворка перечислены ниже.

Не подходит для небольших проектов

Возможности Django могут быть избыточными для небольшого проекта. Однако в экосистеме Python есть другие фреймворки, которые можно использовать в таких случаях. Например, если вы хотите сделать простой чат, лучше использовать Flask.

Нет поддержки WebSocket по умолчанию

Протокол WebSocket обеспечивает обмен данными между сервером и браузером в режиме реального времени. Django не поддерживает эту функциональность из коробки. Но проблему можно решить с помощью других инструментов, например, aiohttp.

Монолитность

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

Непредсказуемость поведения некоторых компонентов

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

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

Альтернативы Django

Фреймворки ускоряют разработку веб-приложений. И в экосистеме Python есть несколько фреймворков, которые можно рассматривать в качестве альтернативы Django. В их число входят Pyramid, Flask и Tornado. Все три инструмента подходят для работы как с масштабными проектами, так и с небольшими приложениями.

Также в качестве альтернативы можно рассматривать PHP-фреймворки, например, Laravel, Symphony или CakePHP. Например, Laravel подходит для работы с масштабными и маленькими проектами, и в этом фреймворке есть мощный движок шаблонов.

Если для вашего проекта критически важна безопасность, Laravel можно считать инструментом первого выбора. В нём реализованы мощные инструменты шифрования. Этот PHP-фреймворк работает с базами данных MySQL, PostgreSQL, SQL Server, SQ Lite.

Ещё одна достойная альтернатива — фреймворк Ruby on Rails. Этот инструмент ускоряет создание веб-приложений и позволяет разработчикам сфокусироваться скорее на бизнес-логике, чем на коде. Кстати, наш сайт создан на Ruby on Rails.

Смотрите также: стрим с Кириллом Мокевниным «Создание сайта на Rails с нуля».

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

Заключение: почему стоит выбрать Django


Разработчики выбирают Django благодаря таким характеристикам:

  • Разделение бизнес-логики и визуальной части на уровне архитектуры.
  • SEO-дружественность.
  • Расширяемость.
  • Развитая инфраструктура: большое количество библиотек и плагинов.
  • Многочисленное и дружественное сообщество, благодаря которому легко искать ответы на сложные вопросы.

Если хотите поделиться опытом работы с Django, пишите в комментариях.

Адаптированный перевод статьи Why Django is the best web framework for your project by Ekaterina Zublenko and Angela Beklemysheva. Мнение авторов может не совпадать с мнением администрации «Хекслета».

Django: разработка веб-приложений на Python

Дата публикации: 2020-10-12

От автора: если бы не было фреймворков, большинство сайтов не были бы созданы или до сих пор создавались бы. Эти наборы инструментов позволяют делать приложения быстрее и качественнее. С другой стороны, фреймворк может таить в себе определенную опасность, о чем тоже поговорим сегодня. Django разработка веб приложений на Python — одна из тем, которая интересует веб-программистов больше всего, ведь это самая частая комбинация фрейма и языка программирования. Если хотите создавать по-настоящему серьезные продукты — без этих знаний никак.

Python — отличный выбор веб-разработчика

Одним из наиболее распространённых языков программирования для веб-разработки является Python, который в просторечии обрел название «Питон». Его нельзя назвать чистым веб-языком, как, скажем, PHP. Это универсальный и высокоуровневый PL, на котором можно создать все: от калькулятора до больших монолитных приложений. Его применение в веб обусловлено тем, что с его помощью создавать нетрудно и быстро. Ну, а если сравнивать с PHP, то синтаксис в нем более простой, с упором на широкую функциональность.

Одной из сильных сторон «Питона» для веб-разработки является наличие высокофункциональных библиотек. Здесь средства для работы с интернетом, XML-файлами и прочим. Ну, а инструменты для взаимодействия с различными операционными системами позволяют писать приложение под любую современную «ось». Также у Python есть средства для того, чтобы написанный вами код заработал быстрее даже без использования сторонних оптимизаторов. Два модуля — «profile» и «timeit» — дают возможность для расчета времени работы программы, чтобы впоследствии создать вариант, который будет выполняться быстрее всего.

По мощности язык часто сравнивают с Java, Perl и Ruby. Как и Python, эти языки подходят для объектно-ориентированного программирования и используются в веб-разработке. Так же, как и на JavaScript, на Питоне можно создавать пользовательские сценарии. Язык столь функционален, что некоторые апологеты создают веб-приложения исключительно на Python. Он широко используется в веб-разработке компанией Google и Facebook. К примеру, веб-версия Instagram создана полностью на «Питоне», в то время как для мобильных приложений он подходит не очень хорошо. Для Python характерно использование больших ресурсов и сравнительно медленное выполнение кода. Для ускорения языка предпринят ряд решений, большинство из них — успешные. Одним из них является использование фреймворка.

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Прогрессивные работают через фреймворк

Когда вы работаете с языком программирования на уровне «Hello, World!», сложно представить, что такое фрейм, и для чего он нужен. Что ж, пора познакомиться с этим явлением, так как дальнейшее развитие вряд ли возможно без этих помощников программиста.

Фреймворки — это наборы для работы с программным кодом. Они одинаково популярны как в веб-разработке, так и в создании программного обеспечения. Это своеобразный каркас, который ставит в определенные рамки. Не то чтобы они существенно снижают гибкость кодинга — скорее, помогают меньше ошибаться.

Основными преимуществами использования фреймворков программисты называют:

оптимизацию труда. Как только вы освоили фреймворк (а это непросто: нужно понять, как мыслил программист, который создавал «каркас»), все становится проще. С виду сложные, программы создаются быстро. Но до этого мастерства быстрого кодинга в веб-разработке нужно идти годами;

сухость и чистота. Звучит не очень, но именно так характеризуют код, написанный с применением фреймворка. Он не содержит «двойных истин» и не требует последующей переработки.

Но и здесь не обошлось без трудностей. Первая в том, что, работая долгое время с конкретным фреймворком — допустим, с Django (о нем ниже) — вы затачиваете мышление под фрейм. Как только вы придете в компанию, которая реализует Python через Flask, придется переучиваться, причем не день и не два. Но, в целом, это не критично. Более весовым аргументом является безопасность. Если злоумышленник знает, какой фрейм вы использовали, то, по сути, понимает, как построено приложение, и может нанести ущерб.

Джанго — против «мокрого» кода

Одним из наиболее распространённых фреймворков для Python в плане веб-разработки является Django. Тот «Питон», который применяют компании Google и Facebook, тоже реализован на Django, как и большинство других веб-проектов.

Django хорош для веб-программирования тем, что следует принципу DRY. Это означает написание кода, который не повторяет сам себя. Если вы учились программированию, то понимаете, о чем идет речь. Один и тот же процесс можно описать по принципу DRY (don’t repeat yourself) и WET (we enjoy typing). Для быстродействия и удобочитаемости намного лучше писать короткий код, который не будет повторяться. К тому же, редактировать функции программы впоследствии будет легче. Именно потому Django является выбором №1 для веб-разработки.

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Хотите узнать, что необходимо для создания сайта?

Посмотрите видео и узнайте пошаговый план по созданию сайта с нуля!

Какой язык и фреймворк выбрать для веб-разработки: Django, Symfony, Ruby on Rails, Catalyst?

Перед многими начинающими разработчиками интернет-проектов и сервисов встает вопрос: на какой платформе начать новый интернет проект, или какой язык и фреймворк изучить для того, что бы было легче в будущем устроиться на работу. Эта статья — краткий обзор популярности языков программирования для веб-разработки и основанных на них фреймворках: Symfony, Django, Ruby on Rails, Catalyst.

Илон Маск рекомендует:  Стильный шаблон сайта HTML, CSS, 5 страниц

Популярность языков программирования

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

Сайты и приложения для web редко пишутся без использования удобных дополнительных средств разработки — фреймворков. Для каждого представленного выше языка разработано множество фреймворков, но здесь мы отметим самые популярные.

Фреймворки для вэб-разработки

Django ( Phyton )

Бесплатный фреймворк для разработки веб-приложений на языке Python. Родился, как проект для управления большими новостными порталами, но подходит для любых типов сайтов. Фреймворк используется на многих крупных сайтах, в том числе в проектах Яндекс.

Яндекс использует Django для «быстрой разработки» и «обкатки» проектов из-за простоты и быстроты разработки и относительно небольшой нагрузки на сервера.

Сайты на Django:

  • Яндекс Афиша;
  • Яндекс Расписания;
  • instagram.com;
  • pinterest.com

Catalyst ( Perl )

Универсальный программный каркас для веб-разработки на языке Perl. Готовые приложения могут быть запущены на серверах с поддержкой CGI.


Simphony ( PHP )

Свободный фреймворк для разработки web-приложений написанный на языке PHP5. Фреймворк разрабатывается с 2007 года по настоящее время. Спонсируется французской компанией Sensio.

Проекты на Simphony:

  • LinguaLeo.ru;
  • delicious.com;
  • CMS Drupal;
  • CMS PhpBB

Ruby on Rails ( Ruby )

Свободный фреймворк написанный на языке программирования Ruby. Ruby on Rails был выпущен в 2004 году. За время существования фреймворк обавелся огромным количеством плагинов. Считается красивым и удобным, но далеко не самым быстрым.

Сайты на RoR:

  • twitter.com;
  • groupon.com;
  • lookatme.ru

Распределение фреймфорков по нагрузке сервер

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

Поделиться «Какой язык и фреймворк выбрать для веб-разработки: Django, Symfony, Ruby on Rails, Catalyst?»

Среды Web-разработки на языке Python, Часть 1

Среда Web-разработки Django на языке Python, от установки до законченного Web-сайта

Йен Маурер, Senior Consultant, Brulant, Inc.

В этой первой статье из двух, мы представим вам Django — среду с открытым исходным кодом для ведения разработки Web-приложений в стиле модель-вид-контроллер (model-view-controller — MVC), вооруженную мощью языка Python. С помощью Django вы можете в считанные минуты создавать высококачественные, легкоуправляемые Web-приложения, работающие под управлением баз данных.

Проект Django представляет собой настраиваемую пользователем среду разработки. Он берёт начало из Web-сайта одной онлайн-газеты и был выпущен как система с открытым исходным кодом в июле 2005 года. Главные компоненты среды разработки Django следующие:

  • Объектно-реляционное отображение (object-relational mapping) для создания моделей
  • Безупречный интерфейс администратора, специально созданный для конечных пользователей
  • Элегантно спроектированный механизм адресования (URL)
  • Язык шаблонов, для дизайнеров
  • Система кэширования

Эта статья — первая из двух статей о среде Web-разработки на языке Python. Вторая статья представит вам среду разработки TurboGears.

Чтобы использовать и понимать код в данной статье, вам необходимо установить Python и знать, как им пользоваться на начальном уровне. Проверьте, есть ли у вас Python, и какой версии, набрав python -V. Минимальным требованием Django является версия 2.3.5, которая доступна вам на Web-сайте Python (см. ссылку в разделе Ресурсы в конце статьи). Вам также следует хотя бы немного быть знакомым с архитектурой MVC.

В этой статье используется разрабатываемая версия Django для того, чтобы воспользоваться преимуществами последних улучшений, внесённых в среду разработки Django. Я рекомендую вам использовать эту версию до появления версии 0.95. Узнайте о наличии последней версии Django на его Web-сайте (снова см. ссылку в Ресурсах).

Чтобы скачать и установить Django вам нужно:
Листинг 1. Скачивание и установка Django

/downloads# svn co http://code.djangoproject.com/svn/django/trunk/ django_src

/downloads# cd django_src

/downloads# python setup.py install

После установки Django вам необходим инструмент администрирования Django, а именно django-admin.py, добавленный в переменную окружения path. Листинг 2 показывает некоторые из команд, доступных инструменту администратора:
Листинг 2. Использование инструмента администрирования Django

/dev$ django-admin.py usage: django-admin.py action [options] actions: adminindex [modelmodule . ] Prints the admin-index template snippet for the given model module name(s). . snip . startapp [appname] Creates a Django app directory structure for the given app name in the current directory. startproject [projectname] Creates a Django project directory structure for the given project name in the current directory. val .

Чтобы начать проект Django, используйте команду программы django-admin startproject вот так:
Листинг 3.Создание проекта

/dev$ django-admin.py startproject djproject

Показанная выше команда создает директорию под названием djproject, которая содержит файлы базовой конфигурации, необходимые для работы проекта Django:
Листинг 4. Содержание директории djproject

__init__.py manage.py settings.py urls.py

В этом проекте вы создадите приложение для отдела занятости, называемое «jobs.» Для создания приложения используйте скрипт manage.py, который является специальным для проекта скриптом в django-admin.py, в котором автоматически задаётся файл settings.py:
Листинг 5. Использование manage.py с параметром startapp

/dev$ cd djproject

/dev/djproject$ python manage.py startapp jobs

Это создает костяк приложения с одним модулем Python для ваших моделей и другим для ваших видов (view). Директория jobs будет содаржать следующие файлы:
Листинг 6. Содержание директории приложения jobs

__init__.py models.py views.py

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

Чтобы Django знал о новом приложении, вам необходимо добавить строку в поле INSTALLED_APPS в файле settings.py. Для этого приложения для отдела занятости нужно добавить строку djproject.jobs:
Листинг 7. Добавление строки к settings.py

INSTALLED_APPS = ( ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.sites’, ‘djproject.jobs’, )

У Django есть своя собственная библиотека object-relational mapper (ORM), которая поддерживает динамический доступ к базам данных через объектный интерфейс Python. Интерфейс Python является очень удобным и эффективным, но вы также можете отказаться от него и напрямую использовать SQL при необходимости.


На данный момент ORM предоставляет поддержку для баз данных PostgreSQL, MySQL, SQLite, а также Microsoft® SQL.

Это пример использует SQLite, в качестве интерфейса к базе данных. SQLite является легковесной базой данных, не требующей конфигурации и располагается на диске в виде простого файла. Чтобы использовать SQLite, просто установите библиотеку pysqlite с помощью инструментов установки (setuptools) (см. дополнительную информацию об инструментах установки (setuptools) и, в частности, об инструменте easy_install, который вам необходимо установить отдельно, в разделе Ресурсы):

Перед тем, как работать с моделью, сконфигурируйте базу данных в файле настроек. Для SQLite необходимо указывать только движок и имя базы данных.
Листинг 8. Конфигурирование базы данных в settings.py

DATABASE_ENGINE = ‘sqlite3’ DATABASE_NAME = ‘/path/to/dev/djproject/database.db’ DATABASE_USER = » DATABASE_PASSWORD = » DATABASE_HOST = » DATABASE_PORT = »

Это приложение для отдела занятости будет иметь два типа объектов: Местоположения (Locations) и Работы (Jobs). Местоположение включает в себя поля города, штата (по желанию), а также страны. Работа имеет местоположение, должность, описание и дату публикации.
Листинг 9. Модуль jobs/models.py

from django.db import models % (self.job_title, self.location)

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

Чтобы увидеть схему базы данных для модели, запустите manage.py с командой sql. Схема пока еще не будет задействована.
Листинг 10. Просмотр схемы базы данных с помощью команды manage.py sql

/dev/djproject$ python manage.py sql jobs BEGIN; CREATE TABLE «jobs_job» ( «id» integer NOT NULL PRIMARY KEY, «pub_date» date NOT NULL, «job_title» varchar(50) NOT NULL, «job_description» text NOT NULL, «location_id» integer NOT NULL ); CREATE TABLE «jobs_location» ( «id» integer NOT NULL PRIMARY KEY, «city» varchar(50) NOT NULL, «state» varchar(50) NULL, «country» varchar(50) NOT NULL ); COMMIT;

Для инициализации и установки модели, запустите команду синхронизирования базы данных syncdb:

/dev/djproject$ python manage.py syncdb

Отметим, что команда syncdb просит вас создать учетную запись суперпользователя. Это происходит потому, что приложение django.contrib.auth, которое предоставляет базовые средства аутентификации пользователя, установлено по умолчанию в ваших настройках INSTALLED_APPS. Имя суперпользователя и пароль будут использоваться для регистрации в инструменте администратора, описанном в следующем разделе. Помните, что это имя и пароль суперпользователя Django, а не системы.

Модели Django обращаются к базе данных через изначально установленный Управляющий (Manager) класс, называемый objects. Например, чтобы вывести список всех Работ, вам нужно использовать метод all, принадлежащий менеджеру objects:
Листинг 11. Вывод всех работ (jobs)

>>> from jobs.models import Job >>> for job in Job.objects.all(): . print job

Управляющий класс также имеет методы фильтрации, называемые filter (фильтрация) и exclude (исключение). Фильтрация получает все объекты, подходящие под условия, тогда как исключение дает все объекты, не подходящие под них. Нижеследующие запросы должны дать такие же результаты («gte» означает «greater than or equal,»(больше или равно) и «lt» означает «less than»)(меньше чем).
Листинг 12. Исключение и фильтрация работ (jobs)

>>> from jobs.models import Job >>> from datetime import datetime >>> q1 = Job.objects.filter(pub_date__gte=datetime(2006, 1, 1)) >>> q2 = Job.objects.exclude(pub_date__lt=datetime(2006, 1, 1))

Методы filter и exclude возвращают объекты QuerySet, которые можно связать в цепочку и которые могут даже представлять соединения. Запрос q4, приведенный ниже, будет находить работы, начиная с 1-го января 2006 года, в г. Кливленд (Cleveland), штат Огайо:
Листинг 13. Снова исключение и фильтрация работ (jobs)

>>> from jobs.models import Job >>> from datetime import datetime >>> q3 = Job.objects.filter(pub_date__gte=datetime(2006, 1, 1)) >>> q4 = q3.filter(location__city__exact=»Cleveland», . location__state__exact=»Ohio»)

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

Эта замедление в выполнении является очень практичной в сочетании с рассекающей (slicing) функциональностью языка Python. Вместо того, чтобы запрашивать все записи, а затем отсекать нужные записи, нижеследующий код использует смещение (OFFSET), равное 5, и предел (LIMIT), равный 10, в настоящем запросе SQL, весьма улучшая качество выполнения.
Листинг 14. Python-рассечение

>>> from jobs.models import Job >>> for job in Job.objects.all()[5:15] . print job

Примечание: Используйте метод count, чтобы понять, сколько записей находятся в QuerySet. Метод len в Python делает полную оценку, а затем подсчитывает количество рядов, возращенных в виде записей, тогда как метод count делает действительный Подсчет (COUNT) SQL, который гораздо быстрее. И ваш администратор баз данных поблагодарит вас.
Листинг 15. Подсчет записей

>>> from jobs.models import Job >>> print «Count = «, Job.objects.count() # GOOD! >>> print «Count = «, len(Job.objects.all()) # BAD!

Для более подробной информации, см. раздел Ресурсы для ссылки на «Справочник по интерфейсу API базы данных» для Django.

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

Инструмент администратора представляет собой приложение, которое идет вместе с Django. Перед тем, как его использовать, его необходимо установить так же, как и приложение jobs. Сперва нужно добавить модуль приложения (django.contrib.admin) в настройки INSTALLED_APPS:
Листинг 16. Изменения в settings.py

INSTALLED_APPS = ( ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.sites’, ‘djproject.jobs’, ‘django.contrib.admin’, )

Чтобы сделать инструмент администратора доступным из адреса (URL) /admin, просто раскройте скобки комментария в строке, в предоставленном вам файле urls.py вашего проекта. В следующем разделе будет рассматриваться конфигурация URL более подробно.
Листинг 17. Использование urls.py, чтобы иструмент администратора стал доступным

from django.conf.urls.defaults import * urlpatterns = patterns(», (r’^admin/’, include(‘django.contrib.admin.urls.admin’)), )

Пиложение администратора имеет свою модель базы данных, которую необходимо установить. Снова используйте команду syncdb, чтобы завершить следующее:

python manage.py syncdb

Чтобы увидеть инструмент администратора, вы можете использовать тест-сервер, которая прилагается к Django.
Листинг 18. Использование тест-сервера, чтобы увидеть инструмент администратора

/dev/djproject$ python manage.py runserver Validating models. 0 errors found. Django version 0.95 (post-magic-removal), using settings ‘djproject.settings’ Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C (Unix) or CTRL-BREAK (Windows).

Теперь вы можете переместиться в инструмент администратора по адресу http://localhost:8000/admin и зарегистрироваться, используя данные администратора, созданные вами ранее. Вы заметите, что ни одна из ваших моделей не доступна для пользования.

Чтобы открыть доступ к классу через инструмент администратора, создайте для него подкласс Admin (Администратора). Затем вы можете настраивать то, как их можно администрировать добавлением характеристик классов к данному подклассу. Листинг 19 показывает, как добавлять класс Location (Местонахождения) к интсрументу администратора.
Листинг 19. Добасвление класса Location с помощью инструмента администратора

)

Теперь вы можете создавать, обновлять и удалять записи Местонахождения (Location) через интерфейс администратора.

Вы можете выводить и сортировать Записи (Records) по городам, штатам и странам, в зависимости от характеристики класса list_display.

Инструмент администратора имеет большое количество опций для управления каждым из классов моделей. Листинг 20 показывает несколько примеров, примененных к классу Job:
Листинг 20. Опции для управления классами моделей

,)

В соответствие с вышеупомянутыми настройками, при выводе записей работ (job) будут использоваться: заголовок работы (job), местонахождения и дата издания. Работы будут располагаться в порядке даты издания, начиная с самого последнего (знак минус означает — в порядке убывания). Пользователи могут найти работы по заголовку и описанию, а администраторы могут фильтровать записи, исходя из их местонахождения.

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

Модуль urls.py создается и определяется в качестве начала отсчета конфигурации URL (с помощью значения ROOT_URLCONF в модуле settings.py). Единственное требование для файла конфигурации URL состоит в том, что он должен содержать объект, определяющий шаблоны, называемые urlpatterns.

Приложение управления работой (job) будет начинаться с index-видом и детальным (detail) видом, которые доступны через настоящие отображения URL:

  • /jobs index-вид: Отображает последние 10 работ
  • /jobs/1 детальный вид: Отображает работы с одним идентификационным номером (ID)

Оба этих вида (index и детальный вид) будут выполнены в модуле, называемом views.py в приложении работ. Выполнение этой конфигурации в файле urls.py проекта будут выглядеть следующим образом:
Листинг 21. Выполнение конфигурации видов в djproject/urls.py

from django.conf.urls.defaults import * urlpatterns = patterns(», (r’^admin/’, include(‘django.contrib.admin.urls.admin’)), (r’^jobs/$’, ‘djproject.jobs.views.index’), (r’^jobs/(?Pd+)/$’, ‘djproject.jobs.views.detail’), )

Отметьте кусочек кода . Это понадобиться позже.

На практике лучше всего — вытаскивать шаблоны URL, специальные для приложений, и помещать их в само приложение. Это отделяет приложение от проекта и позволяет повторно его использовать. Файл конфигурации URL уровня приложений для работ (jobs) будут выглядеть так:
Листинг 22. Файл конфигурации URL уровня приложений, urls.py

from django.conf.urls.defaults import * urlpatterns = patterns(», (r’^$’, ‘djproject.jobs.views.index’), (r’^(?Pd+)/$’, ‘djproject.jobs.views.detail’), )

С тех пор, как методы видов исходят из одного модуля, для настройки djproject.jobs.views в качестве корневого имени модуля можно использовать первый аргумент, и Django использует его для того, чтобы искать методы index и detail:
Листинг 23. jobs/urls.py: поиск index и detail

from django.conf.urls.defaults import * urlpatterns = patterns(‘djproject.jobs.views’, (r’^$’, ‘index’), (r’^(?Pd+)/$’, ‘detail’), )

Чтобы связать в одно целое адреса (URL), перечисленных выше работ (job), назад в проект, необходимо использовать функцию include. Адреса (URL) уровня приложений теперь связаны в разделе /jobs:
Листинг 24. djproject/urls.py: Связывание адресов (URL) обратно в проект

from django.conf.urls.defaults import * urlpatterns = patterns(», (r’^admin/’, include(‘django.contrib.admin.urls.admin’)), (r’^jobs/’, include(‘djproject.jobs.urls’)), )

Если вы попытаетесь войти на начальную (index) страницу (http://localhost:8000/jobs) на этом этапе, используя тест-сервер, вы получите ошибку, так как вид, который будет называться (djproject.jobs.views.index), еще не существует.

Вид представляет собой простой метод языка Python, который принимает объект отклика и отвечает за:

  • Любую бизнес-логику (явно или неявно)
  • Контекстный словарь с данными для шаблона
  • Рендеринг (rendering) шаблона с контекстом
  • Объект отклика, который пропускает отрендеренные (rendered) результаты обратно в среду разработки

В Django вызванный метод языка Python, когда запрашивается URL, называется видом, а страница, закаченная и отрендеренная, видом называется шаблоном. По этой причине, команда разработчиков Django говорила о Django, как о среде разработки с MVT (model-view-template — модель-вид-шаблон). С другой стороны, TurboGears называет свои методы контроллерами, а отрендеренные шаблоны видами, что действительно позволяет использовать аббревиатуру MVC. Разница лишь в использовании слов, но смысл остается тем же.

Самый простейший из возможных видов возвращает объект HttpResponse (http отклик), инициализированный в строковый тип. создайте следующий метод и сделайте из /jobs HTTP-запрос, чтобы проверить, что ваши файлы urls.py и views.py правильно настроены.
Листинг 25. jobs/views.py (v1)

from django.http import HttpResponse def index(request): return HttpResponse(«Job Index View»)

Следующий код получает последние 10 работ (job), рендерит их через шаблон и возвращает отклик. Это не будет работать без файла шаблона из следующего раздела.
Листинг 26. jobs/views.py (v2)

from django.template import Context, loader from django.http import HttpResponse from jobs.models import Job def index(request): object_list = Job.objects.order_by(‘-pub_date’)[:10] t = loader.get_template(‘jobs/job_list.html’) c = Context(< 'object_list': object_list, >) return HttpResponse(t.render(c))

В вышеприведенном коде шаблон назван, как строковый jobs/job_list.html. Рендеринг шаблона происходит в контексте списка работ (job), названном object_list. Отрендеренный шаблон строки попадает в конструктор HTTPResponse, который отправляется назад в клиент запроса с помощью среды разработки.


Этапы загрузки шаблона, создающие контекст и возвращающие новый объект отклика, перемещены ниже с помощью удобного метода, называемого render_to_response. Также новым является метод детального (detail) вида, который использует удобный для этого метод get_object_or_404, чтобы осуществить выборку объекта Job, используя приведенные аргументы. Если объект не найден, то выдается ошибка 404. Эти два метода избавляют программу от большого количества стандартных кодов, используемых в большинстве Web-приложений.
Листинг 27. jobs/views.py (v3)

from django.shortcuts import get_object_or_404, render_to_response from jobs.models import Job def index(request): object_list = Job.objects.order_by(‘-pub_date’)[:10] return render_to_response(‘jobs/job_list.html’, <'object_list': object_list>) def detail(request, object_ : job>)

Отметим, что detail берет object_id в качестве аргумента. Этот номер упоминался раньше, после URL-пути /jobs/ к файлу работ (job) urls.py. Он проходит дальше в метод get_object_or_404 в качестве первичного ключа (primary key — pk).

Приведенные выше виды все еще не будут работать, потому что шаблоны, которые они загружают и рендерят (jobs/job_list.html и jobs/job_detail.html) еще не существуют.

Django предоставляет простой язык шаблонов, спроектированный для быстрого рендеринга и простоты использования. Шаблоны Django создаются из простого текста, встроенного в << переменные >> и <% тэги %>. Затем происходит замена переменных на значения, которые они несут. Тэги используются в качестве основы логики управления. Шаблоны можно использовать для генерирования любого формата текстов, включая HTML, XML, CSV и простой текст.

Первое, что нужно сделать — это определить местонахождение шаблонов. Для простоты, создайте директорию для шаблонов внутри директории djproject и добавьте его путь в строке TEMPLATE_DIRS файла settings.py:
Листинг 28. Создание директории шаблонов в settings.py

TEMPLATE_DIRS = ( ‘/path/to/devdir/djproject/templates/’, )

Шаблоны в Django поддерживают концепцию, называемую наследованием шаблонов, которая позволяет дизайнерам сайтов создавать однородный вид и функциональность без повторения содержания в каждом из шаблонов. Вы можете использовать наследование, определяя документ скелета, или основы, с блочными тэгами. Эти блочные тэги заполняются шаблонами страниц с содержанием. Этот пример показывает скелет кода на HTML с блоками, называемыми title, extrahead и content:
Листинг 29. Документ скелета, templates/base.html

Чтобы приложение было отдельно от проекта, используйте вспомагательный файл основы, в качестве основы для всех файлов страниц приложения Job. Для этого примера, поместите CSS приложения в файл основы для упрощения. В реальном приложении, с хорошо сконфигурированным Web-сервером, возьмите данный CSS и поместите его в статичный файл, обслуживаемый Web-сервером.
Листинг 30. Вспомогательный файл основы, templates/jobs/base.html

Изначально, тест-сервер в Django не обслуживает статичные файлы, потому что эту работу должен выполнять Web-сервер. Если во время разработки вы захотите, чтобы Django работал с картинками, листами стилей и так далее, тогда см. ссылку в Ресурсах о том, как включить эту возможность.

Теперь создайте 2 шаблона страниц для загрузки и рендеринга. Шаблон jobs/job_list.html просто выполняет итерацию через object_list (список объектов), который он получает через контекст, выдаваемый index-видом, а также отображает ссылку на каждую из страниц с подробной информацией о записи.
Листинг 31. Шаблон templates/jobs/job_list.html

<% extends "jobs/base.html" %><% block title %>Job List <% endblock %><% block content %>Job List
    <% for job in object_list %>
    << job.job_title >>

Страница jobs/job_detail.html показывает одну запись, называемую job (работа):
Листинг 32. Страница templates/jobs/job_detail.html

<% extends "jobs/base.html" %><% block title %>Job Detail <% endblock %> <% block content %>Job Detail

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

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

  • Страницы со списком/подробностями (как вышеприведенный пример)
  • Дробление записей по дате (полезно для новостных сайтов и блогов)
  • Создание, обновление и удаление — СОУ (Creation, update, and deletion — CRUD) объектов
  • Простой прямой рендеринг шаблонов или простое HTTP-перенаправление

Вместо создания методов стандартных видов, вся бизнес-логика находится в файле urls.py и управляется с помощью методов универсальных видов, поддерживаемых Django.
Листинг 33. Универсальные виды в jobs/urls.py

from django.conf.urls.defaults import * from jobs.models import Job info_dict = < 'queryset': Job.objects.all(), >urlpatterns = patterns(‘django.views.generic.list_detail’, (r’^$’, ‘object_list’, info_dict), (r’^(?Pd+)/$’, ‘object_detail’, info_dict), )

Три важных изменения в данном файле urls.py:

  • Объект отображения info_dict проходит через набор запросов, чтобы был открыт доступ для Jobs.
  • Он использует django.views.generic.list_detail вместо djproject.jobs.views.
  • Действительно вызванные виды — это object_list и object_detail.

Этот проект следует некоторым требованиям, чтобы переход к универсальным видам произошел автоматически:

  • Универсальный детальный (detail) вид ожидает аргумент с именем object_id.
  • Шаблоны следуют наименованию: app_label/model_name_list.html (jobs/job_list.html) app_label/model_name_detail.html (jobs/job_detail.html)
  • Шаблон списка управляет списком с именем object_list.
  • Детальный шаблон управляет объектом с именем object.

Больше опций можно задать через info_dict, включая значение paginate_by, которое определяет число объектов на странице.

Следующая статья этого выпуска будет рассматривать TurboGears, другую среду Web-разработки на языке Python, и будет сравнивать его с Django.

Научиться

  • Оригинал статьи Python Web frameworks, Part 1: Develop for the Web with Django and Python.
  • Читайте обзор MVC-архитектуры в Wikipedia.
  • «Скоростное создание Web-приложений с Ruby on Rails (Fast-track your Web apps with Ruby on Rails)» (developerWorks, июнь 2005 г.) показывает то, как Ruby on Rails создает Web-приложения.
  • Python.org является домашней страницей языка программирования Python, где вы можете найти ссылки для скачивния интерпретатора языка Python и стандартные библиотеки.
  • Руководство по языку Python поможет вам освоиться с языком Python.
  • DjangoProject.com является домашней страницей среды разработки Django.В документацию входит:
    • Как устанавливать Django (How to install Django), где показано, как настраивать Django на машине разработчика
    • Справочник по интерфейсу API базы данных (Database API reference), руководство по использованию ORM-библиотеки в Django
    • Язык шаблонов в Django (Django template language), простое руководство для программистов
    • Как обслуживать статичные файлы (How to serve static files), представляет, как настраивать Django, чтобы обслуживать статичные файлы во время разработки (не делайте этого при выпуске продукта)
    • Как использовать Django с mod_python (How to use Django with mod_python), руководство по комбинированию Django с Apache с помощью модуля mod_python
    • Универсальные виды (Generic views), где показано, как выполнять обычные образцы Web-приложений на много быстрее с помощью универсальных видов в Django
  • Пакеты создания и распространения с инструметами установки (Building and Distributing Packages with setuptools) показывают как устанавливать setuptools вместе с easy_install, как часть пакета Python Eggs.
  • Подсказки по производительности Django (Django performance tips) показывают, как исправлять проблемы с трафиком с помощью Django.
  • На сайте developerWorks в разделе Linux вы можете найти больше источников для Linux-разработчиков.
  • Будьте в центре технических событий в developerWorks и Web-трансляций.

Получить продукты и технологии

  • Закажите SEK для Linux, коробка с двумя DVD, содержащими последние пробные версии ПО IBM для Linux: DB2®, Lotus®, Rational®, Tivoli® и WebSphere®.
  • Доступное пробное ПО IBM для скачивания прямо с сайта developerWorks, чтобы вы могли создавать следующие разработки под Linux.

Йен Маурер (Ian Maurer) — главный консультант в Brulant, Inc., где он специализируется на интегрированных решениях в электронной коммерции (e-commerce), использующих открытое ПО и технологии IBM WebSphere в различных отраслях, включая товары широкого потребления и розничную торговлю. Йен проживает в северо-восточной части штата Огайо (Ohio) и является членом Cleveland Area Python Interest Group.

Чтобы приложение было отдельно от проекта, используйте вспомагательный файл основы, в качестве основы для всех файлов страниц приложения Job. Для этого примера, поместите CSS приложения в файл основы для упрощения. В реальном приложении, с хорошо сконфигурированным Web-сервером, возьмите данный CSS и поместите его в статичный файл, обслуживаемый Web-сервером.
Листинг 30. Вспомогательный файл основы, templates/jobs/base.html

Изначально, тест-сервер в Django не обслуживает статичные файлы, потому что эту работу должен выполнять Web-сервер. Если во время разработки вы захотите, чтобы Django работал с картинками, листами стилей и так далее, тогда см. ссылку в Ресурсах о том, как включить эту возможность.

Теперь создайте 2 шаблона страниц для загрузки и рендеринга. Шаблон jobs/job_list.html просто выполняет итерацию через object_list (список объектов), который он получает через контекст, выдаваемый index-видом, а также отображает ссылку на каждую из страниц с подробной информацией о записи.
Листинг 31. Шаблон templates/jobs/job_list.html

<% extends "jobs/base.html" %><% block title %>Job List <% endblock %><% block content %>Job List
    <% for job in object_list %>
    << job.job_title >>

Страница jobs/job_detail.html показывает одну запись, называемую job (работа):
Листинг 32. Страница templates/jobs/job_detail.html

<% extends "jobs/base.html" %><% block title %>Job Detail <% endblock %> <% block content %>Job Detail

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

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

  • Страницы со списком/подробностями (как вышеприведенный пример)
  • Дробление записей по дате (полезно для новостных сайтов и блогов)
  • Создание, обновление и удаление — СОУ (Creation, update, and deletion — CRUD) объектов
  • Простой прямой рендеринг шаблонов или простое HTTP-перенаправление

Вместо создания методов стандартных видов, вся бизнес-логика находится в файле urls.py и управляется с помощью методов универсальных видов, поддерживаемых Django.
Листинг 33. Универсальные виды в jobs/urls.py

from django.conf.urls.defaults import * from jobs.models import Job info_dict = < 'queryset': Job.objects.all(), >urlpatterns = patterns(‘django.views.generic.list_detail’, (r’^$’, ‘object_list’, info_dict), (r’^(?Pd+)/$’, ‘object_detail’, info_dict), )

Три важных изменения в данном файле urls.py:

  • Объект отображения info_dict проходит через набор запросов, чтобы был открыт доступ для Jobs.
  • Он использует django.views.generic.list_detail вместо djproject.jobs.views.
  • Действительно вызванные виды — это object_list и object_detail.

Этот проект следует некоторым требованиям, чтобы переход к универсальным видам произошел автоматически:

  • Универсальный детальный (detail) вид ожидает аргумент с именем object_id.
  • Шаблоны следуют наименованию: app_label/model_name_list.html (jobs/job_list.html) app_label/model_name_detail.html (jobs/job_detail.html)
  • Шаблон списка управляет списком с именем object_list.
  • Детальный шаблон управляет объектом с именем object.

Больше опций можно задать через info_dict, включая значение paginate_by, которое определяет число объектов на странице.

Следующая статья этого выпуска будет рассматривать TurboGears, другую среду Web-разработки на языке Python, и будет сравнивать его с Django.

Научиться

  • Оригинал статьи Python Web frameworks, Part 1: Develop for the Web with Django and Python.
  • Читайте обзор MVC-архитектуры в Wikipedia.
  • «Скоростное создание Web-приложений с Ruby on Rails (Fast-track your Web apps with Ruby on Rails)» (developerWorks, июнь 2005 г.) показывает то, как Ruby on Rails создает Web-приложения.
  • Python.org является домашней страницей языка программирования Python, где вы можете найти ссылки для скачивния интерпретатора языка Python и стандартные библиотеки.
  • Руководство по языку Python поможет вам освоиться с языком Python.
  • DjangoProject.com является домашней страницей среды разработки Django.В документацию входит:
    • Как устанавливать Django (How to install Django), где показано, как настраивать Django на машине разработчика
    • Справочник по интерфейсу API базы данных (Database API reference), руководство по использованию ORM-библиотеки в Django
    • Язык шаблонов в Django (Django template language), простое руководство для программистов
    • Как обслуживать статичные файлы (How to serve static files), представляет, как настраивать Django, чтобы обслуживать статичные файлы во время разработки (не делайте этого при выпуске продукта)
    • Как использовать Django с mod_python (How to use Django with mod_python), руководство по комбинированию Django с Apache с помощью модуля mod_python
    • Универсальные виды (Generic views), где показано, как выполнять обычные образцы Web-приложений на много быстрее с помощью универсальных видов в Django


  • Пакеты создания и распространения с инструметами установки (Building and Distributing Packages with setuptools) показывают как устанавливать setuptools вместе с easy_install, как часть пакета Python Eggs.
  • Подсказки по производительности Django (Django performance tips) показывают, как исправлять проблемы с трафиком с помощью Django.
  • На сайте developerWorks в разделе Linux вы можете найти больше источников для Linux-разработчиков.
  • Будьте в центре технических событий в developerWorks и Web-трансляций.

Получить продукты и технологии

  • Закажите SEK для Linux, коробка с двумя DVD, содержащими последние пробные версии ПО IBM для Linux: DB2®, Lotus®, Rational®, Tivoli® и WebSphere®.
  • Доступное пробное ПО IBM для скачивания прямо с сайта developerWorks, чтобы вы могли создавать следующие разработки под Linux.

Йен Маурер (Ian Maurer) — главный консультант в Brulant, Inc., где он специализируется на интегрированных решениях в электронной коммерции (e-commerce), использующих открытое ПО и технологии IBM WebSphere в различных отраслях, включая товары широкого потребления и розничную торговлю. Йен проживает в северо-восточной части штата Огайо (Ohio) и является членом Cleveland Area Python Interest Group.

Python Django разработчик / Python Django developer (Ruby, ROR, WEB)

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

Обратите внимание на другие вакансии в Москве

Всего вакансий в городе: 12048
Активных вакансий: 520
Минимальный заработок: 20 000 руб.
Средний заработок: 90 579 руб.
Максимальный заработок: 325 000 руб.
Статистика от 11.11.2020

Описание вакансии 6 ноября 2015

Люди — Наша главная ценность.

Python Django Framework JavaScript PostgreSQL Linux Git Ruby Ruby On Rails Celery Redis

    Развитие и поддержка существующих проектов:

      Система аудита торговых точек для крупнейшего Российского ритейлера Система Мобильной регистратуры для частных клиник clinicmr.ru Мобильный гид по мероприятиям и конференциям evenlookapp.ru

Разработка высоконагруженных систем

Требования (не жесткие):

    Опыт программирования на Python 2-3 года Знание Django, опыт работы с Celery,Redis Знание PostgeSQL, MySQL Умение разбираться в чужом коде Умение работать с GIT, SVN Опыт работы с REST API, jQuery Опыт работы с Docker контейнерами Linux user Умение работать в команде, высокий уровень самоорганизации, быстрая обучаемость

    Опыт работы с Ruby on Rails Знаете о верстке) Работали с фреймворками angular/ backbone Использовали шаблон bootstrap

Что мы хотим помимо техники:

    Доверие, Надежность, Ответственность и Исполнительность Желание изучать новые технологии

Что мы предлагаем:

    Участие в проектировании крупнейших b2c мобильных приложений России Оформление по ТК Хорошую зарплату по итогам собеседования Проектные бонусы Корпоративное обучение Гибкий график Молодой коллектив, неограниченный доступ к кофе и плюшкам.

Три вопроса о RoR и Django

Заранее прошу прощения если этот вопрос уже поднимался. Сравните пожалуйста 2 веб-фреймворка — Django и RoR. Интересуют три аспекта: скорость разработки, производительность и наличие русскоязычной, актуальной документации. Не холивара ради.

Джанго это фреймворк для мелких проектов. У него очень, очень мало инструментов и слабая архитектура(да, в корнях используется метапрограммирование, но не так чтобы называть это высшим пилотажем). Слабая производительность, костыльность, клей, гвозди, сопли.
Да, для блога и небольших сайтов сгодится, но даже в этой нише RoR в сто раз удобнее, быстрее в разработке и более документирован.
Ничто сейчас не сравнится с RoR по количеству инструментов.
Джанго можно использовать только патриотизма за питон ради.
На питоне ест масса хороших веб-фреймворков(Flask, Pylons, Pyramid, WebPy), которые широко и успешно решают свою задачу, в своей нише, но это не та ниша, которую занимает RoR и хочется занимать Django.

Учи английский. Выбирай любой.

>Джанго это фреймворк для мелких проектов.

Однозначно django. Документация выше всех похвал, чего стоит только djangobook. RoR как и сам Ruby — тормоз, совершенно не подходит для для проектов с высокой посещаемостью

Привыкай, это tia, великий спец и аналитик.

>Джанго это фреймворк для мелких проектов. У него очень, очень мало инструментов

Ну да, а flask и webpy ну просто обвешаны инструментами доверху.

Хоть бы думал, что пишешь, хотя про pyramid ты правильно упомянул, он интересный.

Что? Джанго это ферймворк для мелких проектов, на большее он не годится. Опытные разработчики(а не фанатики и идиоты вроде baverman) подтвердят.
Flash и WebPy есть микро веб-фреймворки, они подходят для микро разработок и встраиваемых систем.

Ну да, а flask и webpy ну просто обвешаны инструментами доверху.

Я не понял к чему этот сарказм. Я и не говорил что у них есть много инструментов.

2ТС: Не доверяй проходимцам, которые, кроме одного инструмента, ничего не знают. Я хорошо изучил много инструментов и объективно тебе советую идти на RoR.

Оба жуткое гавно. Бери фреймворк-конструктор вроде Pylons и соберай себе сам. Я вот свой умею собрать на жавных либах, неплохо получается.

>Что? Джанго это ферймворк для мелких проектов

Надо яндексу сказать, а то мучается, бедненький.

Я хорошо изучил много инструментов.

Это надо было в самом начале писать, чтобы мы не тратили время и силы на всю остальную твою писанину.

>Я не понял к чему этот сарказм. Я и не говорил что у них есть много инструментов.

Ты сказал, что у джанги мало инструментов, и в виде альтернативы написал flask и webpy. Ты ещё tornado забыл, да.

2ТС: Не доверяй проходимцам, которые, кроме одного инструмента, ничего не знают. Я хорошо изучил много инструментов и объективно тебе советую идти на RoR.

2ТС: Не доверяй tia, который считает, что всё знает. Бери либо джанго, либо РоР, либо пайлонс-пирамид. Всё равно результат зависит от умений в программировании и проектировании в первую очередь.

Беспредметный спор, человек, спросил с какого фреймворка лучше начать — ему дали ответ, для начинающего лучше django ничего нет. Другое дело опытный разработчик на питон которому нужна большая гибкость возьмет pylons или вообще откажется от использования фреймворков в пользу таких библиотек werkzeug или webob дополнив их необходимыми инструментами. В мире питон оргомное количество первокласных библиотек.

Нужен темплейтный движок — mako, jinja .

Нужен ОРМ — sqlalchemy, sqlobject, storm.

Нужна работа с формами — formencode, wtforms .

Что касается, Ruby, то ему не хватает главного — производительности и инструментов, так что выбор в пользу python очевиден.

Илон Маск рекомендует:  Что такое код getgraphmode
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL