Рубрики
Без рубрики

Колба против Джанго

Автор оригинала: Scott Robinson.

Колба против Джанго

В этой статье мы рассмотрим два самых популярных веб-фреймворка на Python: Django и Flask.

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

приступая к работе

Один из самых простых способов сравнить два фреймворка – это установить их и отметить, насколько легко пользователь может начать работу с ними, что мы и сделаем дальше. Мы попробуем настроить Django и Flask на Linux-машине и создадим приложение, чтобы увидеть, насколько легко (или сложно) этот процесс происходит с каждым из них.

Настройка Django

В этом разделе мы установим Django на машине с Linux. Лучший способ начать работу с любым фреймворком Python-это использовать виртуальные среды . Мы установим его с помощью pip .

$ sudo apt-get install python3-pip
$ pip3 install virtualenv
$ virtualenv --python=`which python3` ~/.virtualenvs/django_env

Примечание : Если команда pip3 выдает ошибку, вам может потребоваться префикс sudo , чтобы она работала.

Как только мы закончим настройку вашей виртуальной среды, которую мы назвали django_env , мы должны активировать ее, чтобы начать использовать:

$ source ~/.virtualenvs/django_env/bin/activate

После активации мы можем, наконец, установить Django:

$ pip install Django

Предположим, наш проект называется mysite . Создайте новый каталог и войдите в него, выполнив следующие команды:

$ mkdir mysite
$ cd mysite
$ django-admin startproject mysite

Если вы проверите полученный проект, ваша структура каталогов будет показана следующим образом:

mysite/
  manage.py 
  mysite/
    __init__.py 
    settings.py 
    urls.py 
    wsgi.py

Давайте посмотрим, что важно в каждом из созданных каталогов и файлов.

  • Корневой каталог mysite/ – это каталог контейнера для нашего проекта
  • manage.py – это инструмент командной строки, который позволяет нам работать с проектом по-разному
  • mysite/ каталог-это пакет Python нашего кода проекта
  • mysite/__init__.py – это файл, который сообщает Python, что текущий каталог должен считаться пакетом Python
  • mysite/settings.py будет содержать свойства конфигурации для текущего проекта
  • mysite/urls.py – это файл Python, содержащий определения URL-адресов для этого проекта
  • mysite/wsgi.py действует как запись для веб-сервера WSGI , который пересылает запросы в ваш проект

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

$ python manage.py runserver

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

September 20, 2017 - 15:50:53
Django version 1.11, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

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

Чтобы проверить свое приложение, перейдите по ссылке http://localhost:8000/ , где ты

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

Итак, чтобы создать свое приложение, перейдите в каталог проекта и выполните следующую команду:

$ cd mysite
$ python manage.py startapp myapp

Это создаст еще одну структуру каталогов, в которой вы сможете управлять своими моделями, представлениями и т. Д.

manage.py
myapp/
  __init__.py
  admin.py
  apps.py
  migrations/
  models.py
  tests.py
  views.py
mysite/
  __init__.py 
  settings.py 
  urls.py 
  wsgi.py

Отсюда вам нужно настроить свои представления в views.py и маршрутизация URL-адресов в urls.py , который мы прибережем для другого урока.

Но ты ведь понимаешь, в чем дело? Требуется несколько команд и довольно

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

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

$ pip install Flask

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

Позаимствовав пример с домашней страницы Flask, вы можете создать запускаемое приложение Flask всего из одного файла:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

И запустить приложение примерно так же просто, как и настроить его:

$ FLASK_APP=hello.py flask run
 * Running on http://localhost:5000/

Посещение URL-адреса http://localhost:5000/ должен отображать текст “Hello World!” в вашем браузере.

Я бы посоветовал вам поискать несколько примеров приложений на домашней странице Flask, чтобы узнать больше. Обучение на собственном примере – один из лучших способов быстро встать и бежать.

Структура, которая “побеждает” в этой области, действительно соответствует вашим потребностям и опыту. Django может быть более благоприятным для начинающих, так как он принимает решения за вас (например, как структурировать ваше приложение), в то время как в Flask вам нужно

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

Кривая обучения

Что касается кривой обучения, то, как мы видели в последнем разделе с Flask, начать было очень легко. Приложение не требует сложной структуры каталогов, где вам нужно было бы запомнить, какой каталог/файл что делает. Вместо этого вы можете добавлять файлы и каталоги по мере их использования. Вот что такое Flask, как micro -фреймворк для веб-разработки.

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

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

Возможность трудоустройства

Какие из этих фреймворков помогут вам найти работу? Для многих разработчиков это один из наиболее важных вопросов, касающихся определенных библиотек и фреймворков:

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

Вот лишь несколько компаний, которые используют (или использовали) Django для своих сайтов:

  • Pinterest
  • Инстаграм
  • Инстаграм
  • НАСА

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

Однако есть намеки на то, кто использует Flask, основанные на сообщениях о работе, технических разговорах, сообщениях в блогах и т. Д. Из них мы знаем, что следующее

  • Однако есть намеки на то, кто использует Flask, основанные на сообщениях о работе, технических разговорах, сообщениях в блогах и т. Д. Из них мы знаем, что следующие компании использовали Flask где-то в своей внутренней инфраструктуре:
  • Сеть LinkedIn
  • Pinterest
  • Убер
  • Почтовое ружье

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

Размер и объем проекта

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

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

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

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

Ограничения

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

Джанго

Итак, какие аспекты Django, которые работают против него, должны быть выбраны в качестве вашего фреймворка выбора?

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

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

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

Колба

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

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

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

Выбор Колбы или Джанго

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

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

Если вы уделяете большое внимание поддержке сообщества, то Django, вероятно, лучше в этом отношении, учитывая его историю. Он существует с 2005 года, тогда как Flask был создан в 2010 году. На момент написания этой статьи у Django было примерно в 3,5 раза больше вопросов/ответов на StackOverflow, чем у Flask (около 2600 вопросов Django к 750 Flask).

Каркас колбы относительно легкий. На самом деле он почти в 2,5 раза меньше, чем Django по объему кода. Это большая разница, особенно если вам нужно понять внутреннюю работу вашего веб-фреймворка. В этом аспекте Flask будет намного легче читать и понимать для большинства разработчиков.

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

учить больше

Хотите узнать больше о любом из этих фреймворков? Там есть довольно много ресурсов. Вот несколько курсов, которые я нашел довольно полезными и которые помогут вам быстрее освоиться:

Python и Django Full Stack Web Developer Bootcamp

Python и Django Full Stack Web Developer Bootcamp

REST API с Flask и Python

REST API с Flask и Python

В противном случае вы также можете получить отличное начало, посетив соответствующие веб-сайты каждого фреймворка:

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

Вывод

В этой статье мы сравнили два веб-фреймворка, Django и Flask, рассмотрев их различные свойства и настроив простое приложение “Hello World!” для каждого из них.

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

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

Если вам нужна рекомендация, то я лично пойду с Фляжкой. Изучая структуру, которая не скрывает от вас так много вещей, вы можете узнать гораздо больше. Как только вы лучше поймете основные концепции веб-разработки и HTTP, вы можете начать использовать дополнения, которые абстрагируют это от вас. Но, на мой взгляд, на раннем этапе гораздо важнее иметь этот прочный фундамент понимания.

Если вам нужна рекомендация, то я лично пойду с Фляжкой. Изучая структуру, которая не скрывает от вас так много вещей, вы можете узнать гораздо больше. Как только вы лучше поймете основные концепции веб-разработки и HTTP, вы можете начать использовать дополнения, которые абстрагируют это от вас. Но, на мой взгляд, на раннем этапе гораздо важнее иметь этот прочный фундамент понимания.