Разное

Flask или django: Сравнение Flask vs Django. Самые популярные платформы Python — Python 3 | Data Science | Нейронные сети | AI

Содержание

Сравнение Flask vs Django. Самые популярные платформы Python — Python 3 | Data Science | Нейронные сети | AI

Содержание страницы

Flask vs Django: как понять, нужен ли вам молоток или ящик для инструментов

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

Django — это бесплатная среда разработки веб-приложений Python с открытым исходным кодом, которая следует шаблону Model-Template-View (MTV). Он был создан осенью 2003 года Адрианом Головатым и Саймоном Уиллисоном. 

Django был создан для упрощения процесса разработки сайта. Основное внимание уделяется повторно используемым компонентам, меньшему количеству кода и быстрой разработке. На него повлияли несколько более ранних фреймворков, в том числе Zope и Plone, и, в свою очередь, они вдохновили множество других фреймворков, которые последовали за ним, включая Pyramid, CherryPy, Bottle и Web2py.

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

  • Werkzeug (серверная среда) и
  • Jinja2 (библиотека шаблонов).

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

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

Django предоставляет свой собственный Django ORM (объектно-реляционное отображение) и использует модели данных, в то время как Flask вообще не имеет моделей данных. Модели данных позволяют разработчикам связывать таблицы базы данных с классами на языке программирования, чтобы они могли работать с моделями так же, как ссылки на базы данных. Почему у Flask нет модели данных? Потому что философия Flask отличается от философии Django. 

Django связывает все вместе, а Flask более модульный.

Основное различие между Django и Flask в том, что Django предоставляет полнофункциональную среду Model-View-Controller. 

Цель Django — упростить процесс разработки сайта. Он основан на меньшем количестве кода, повторно используемых компонентах и ​​быстрой разработке.

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

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

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

Производительность Flask vs Django является важным показателем функциональности системы. Если инфраструктура обладает высокой производительностью, это приведет к созданию масштабируемого, быстрого и безопасного приложения. Слабая производительность может привести к масштабным проблемам и архитектурным проблемам.

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

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

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

В случае сравнения Python Django с Flask, Django имеет огромное и активное сообщество разработчиков. Если у вас есть какие-либо вопросы, вы можете задать их на различных веб-порталах и форумах, таких как Stack Overflow, и, скорее всего, получите ответ. Кроме того, не трудно найти работу Django.

Сообщество Flask не такое большое, как сообщество Django. Поэтому, если вам сложно писать на Flask или у вас есть вопросы по Flask, поиск ответов может занять некоторое время.

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

  • Межсайтовый скриптинг (XSS). Атаки XSS позволяют злоумышленнику внедрить клиентские сценарии в браузеры. Шаблоны Django защищают ваш проект от большинства XSS-атак.
  • Подделка межсайтовых запросов (CSRF). CSRF-атаки позволяют злоумышленнику выполнять действия, используя учетные данные другого пользователя. Django имеет встроенную защиту от большинства типов CSRF-атак.
  • SQL-инъекция. SQL-инъекция — это атака, при которой злонамеренный пользователь может выполнить произвольный код SQL в базе данных. Наборы запросов Django защищены от внедрения SQL, поскольку запросы строятся с использованием параметризации.

Библиотека Flask-Security предоставляет почти те же механизмы, что и Django, для предотвращения утечек данных и других веб-атак.

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

Давайте на минутку рассмотрим лучшие примеры сайтов Django и Flask.

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

Примеры приложений Django:

  • Population Explorer , проект SaaS, который предоставляет пользователям доступ к демографическим данным и инструментам анализа на карте. Пользователи могут выбрать целевую область и получить демографические данные о ней, такие как распределение по полу, возрасту, численности населения, плотности населения и росту населения. Мы внедрили платежную систему, чтобы пользователи могли приобретать планы подписки прямо на сайте. Population Explorer содержит огромное количество данных и множество функций, и Django — это то, что делает все это возможным.
  • Possio , SaaS-платформа, где пользователи могут отслеживать местоположение транспортных средств, а также данные о резком торможении, быстром ускорении, агрессивном вождении и превышении скорости. Поскольку Possio обрабатывает огромные объемы данных в режиме реального времени, Django является отличным решением.

Flask — одна из ведущих платформ Python для веб-разработки. Согласно опросам разработчиков Python от JetBrains , использование Flask среди разработчиков увеличилось с 41% в 2017 году до 47% в 2018 году. Причины, по которым всемирно известные компании, такие как Airbnb и Reddit, используют Flask, многочисленны. Flask дает вам больше контроля над вашим проектом, поскольку вы можете выбирать, какие компоненты использовать и как вы взаимодействуете с ними. Кроме того, вы можете подключить любое расширение, которое вам нужно.

Сайты этих всемирно известных компаний создаются с помощью Flask:

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

Давайте подытожим особенности и сильные стороны Django и Flask, чтобы вы могли решить, какие рамки выбрать.

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

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

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

Мы надеемся, что наше руководство по Python Flask vs Django позволило вам лучше понять преимущества и недостатки этих платформ, различия и варианты использования.

Flask против Django: сравнение создания REST API | Статьи о Джанго

Почему Flask или Django является распространенным вопросом? Если бы вы искали «лучший язык программирования для изучения» в Google, он сказал бы, что Python является одним из наиболее часто рекомендуемых языков для начинающих. Это не должно вызывать удивления, поскольку Python является одним из самых удобных языков на сегодняшнем рынке и является основой таких компаний, как Instagram, Pinterest и Spotify.

Хотя, когда дело доходит до фактического построения приложения в Python, нет недостатка в выборе инструментов, которые вы можете использовать. Тем не менее, в мире, управляемом сетью, в котором мы в настоящее время живем, API являются главными, а когда дело доходит до Python, два популярных варианта для создания масштабируемого, производительного REST API: Django и Flask.

Flask против Django: создание API для гадалки

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

Чтобы продемонстрировать различия между этими двумя средами, давайте взглянем на процесс создания базового REST API «Fortune Cookie» с использованием каждого из них. Для простоты этот API будет иметь только одну конечную точку /fortune, которая будет возвращать базовый ответ JSON, содержащий случайное состояние.

Ничего особенного, но достаточно, чтобы понять всю сложность (или простоту) каждой структуры.

Если вы хотите следовать примерам, убедитесь, что у вас установлена последняя версия Python, а также Flask и Django. Чтобы быстро начать, вы можете:

  • Загрузите и установите предварительно созданную среду выполнения «Fortune Cookie API» для Windows 10, macOS, CentOS 7 или…
  • Загрузите предварительно созданную среду Python WebDev, которая содержит все популярные фреймворки, инструменты и утилиты, необходимые для быстрого запуска и работы всей команды, независимо от того, используют ли они Mac, Windows или Linux.

С этого момента в данной статье предполагается, что у вас есть Flask и Django, а также Python, установленный в вашей системе и в вашем PATH.

Flask против Django: создание API с помощью Flask

Давайте продолжим и сделаем нашу конечную точку API. Для этого давайте сначала начнем с очень простой конечной точки /fortune, которая возвращает только одно состояние. Сначала создайте новый файл с именем app.py в вашем любимом текстовом редакторе и введите следующий код:


from flask import Flask, jsonify

app = Flask(__name__)
app.config["DEBUG"] = True

@app.route('/fortune', methods=['GET'])
def fortune():
  return jsonify({
 'data': 'How many of you believe in psycho-kinesis? Raise my hand.',
 'status': 'awesome'
  }), 200

Чтобы разбить вышеприведенный блок кода, мы определяем маршрут, который, с точки зрения веб-приложения, является частью, которая идет после имени домена, например /fortune в https://api.flower.codes/fortune. Часть, который следует после, def fortune(), является функцией, которая обрабатывает запросы к маршруту /fortune, который в настоящее время возвращает единственное состояние.

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


from flask import Flask, jsonify
import random

app = Flask(__name__)
app.config["DEBUG"] = True

@app.route('/fortune', methods=['GET'])
def fortune():
    fortunes = [
      'A feather in the hand is better than a bird in the air. ',
      'A golden egg of opportunity falls into your lap this month.',
      'Bide your time, for success is near.',
      'Curiosity kills boredom. Nothing can kill curiosity.',
      'Disbelief destroys the magic.',
      'Don't just spend time. Invest it.',
      'Every wise man started out by asking many questions.',
      'Fortune Not Found: Abort, Retry, Ignore?',
      'Good to begin well, better to end well.',
      'How many of you believe in psycho-kinesis? Raise my hand.',
      'Imagination rules the world.',
      'Keep your face to the sunshine and you will never see 
shadows.',
      'Listen to everyone. Ideas come from everywhere.',
      'Man is born to live and not prepared to live.',
      'No one can walk backwards into the future.',
      'One of the first things you should look for in a problem is its positive side.',
      'Pick battles big enough to matter, small enough to win.',
      'Remember the birthday but never the age.',
      'Success is failure turned inside out.',
      'The harder you work, the luckier you get.',
      'Use your eloquence where it will do the most good.',
      'What's hidden in an empty box?',
      'Your reputation is your wealth.'
    ]

  return jsonify({
 'data': random.choice(fortunes),
 'status': 'awesome'
  }), 200

Теперь все, что нам нужно сделать, это запустить API, что можно сделать с помощью команды работы с flask (не забудьте установить переменную FLASK_APP для файла app.py, который мы только что создали):


$ FLASK_APP=app.py flask run
 * Serving Flask app "app.py"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Если бы мы взяли указанное доменное имя и добавили наш определенный маршрут, который является http://127.0.0.1:5000/fortune, мы должны увидеть случайный ответ на состояние в формате JSON, который мы определили:

Чтобы проверить случайность, попробуйте перезагрузить страницу. Каждый раз вы должны получать что-то новое, и вы также сможете пометить «создать REST API» в своем списке.

Flask против Django: создание API с помощью Django

Как мы только что видели, Flask — это очень практичная среда. Он минимально самоуверен и дает своим пользователям достаточно веревки, чтобы повеситься, если они не будут осторожны. Но как насчет Джанго? Что отличает это? В двух словах: особенности.

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


$ django-admin startproject activestate_django_api_example

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


+-- activestate_django_api_example
 +-- manage.py
 +-- activestate_django_api_example
     +-- __init__.py
     +-- settings.py
     +-- urls.py
     +-- wsgi.py

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


$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

Эти миграции инициализируют таблицы базы данных, которые необходимы для аутентификации, управления сеансами и интерфейса администратора (то, с чем Flask не поставляется).

Чтобы запустить сервер как есть, все, что вам нужно сделать, это запустить python manage.py runserver, который запустит сервер на порту 8000 вашей локальной машины:


$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
August 14, 2019 - 19:07:37
Django version 1.11.23, using settings 'activestate_django_api_example.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Как уже упоминалось, Django поставляется со встроенным интерфейсом администратора. Поэтому, если бы мы перешли на http://127.0.0.1:8000/admin, мы бы увидели страницу, которая выглядит примерно так:

Если, например, мы хотим использовать интерфейс администратора, мы можем создать пользователя администратора, например:


$ python manage.py createsuperuser
Username (leave blank to use 'zach'): zach
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.

Использование интерфейса администратора выходит за рамки данной статьи, но это прекрасный пример того, насколько полнофункциональный Django по сравнению с Flask (по замыслу). Следующее, что нам нужно сделать, чтобы создать наш Fortune API, — это создать приложение Fortune в нашем проекте Django:


$ python manage.py startapp fortune

При запуске приведенная выше команда создаст новую папку в каталоге нашего проекта под названием «fortune», которая будет содержать несколько файлов, похожих на те, которые уже были созданы:


+-- activestate_django_api_example
 +-- db.sqlite3
 +-- manage.py
 +-- activestate_django_api_example
     +-- __init__.py
     +-- settings.py
     +-- urls.py
     +-- wsgi.py
 +-- fortune
     +-- __init__.py
     +-- admin.py
     +-- apps.py
     +-- models.py
     +-- tests.py
     +-- views.py
     +-- migrations
         +-- __init__.py

Django следует стандарту Model-View-Controller, что означает, что для создания нашей конечной точки API /fortune в Django нам нужно будет добавить ее в файл views.py. Так как мы разработали случайный выбор состояния в нашем примере с Flask выше, мы пропустим этот шаг и перейдем прямо к полной функциональности:


from django.shortcuts import render
from django.http import JsonResponse
import random

# Create your views here.
def fortune(request):
  fortunes = [
 'A feather in the hand is better than a bird in the air. ',
 'A golden egg of opportunity falls into your lap this month.',
 'Bide your time, for success is near.',
 'Curiosity kills boredom. Nothing can kill curiosity.',
 'Disbelief destroys the magic.',
 'Don't just spend time. Invest it.',
 'Every wise man started out by asking many questions.',
 'Fortune Not Found: Abort, Retry, Ignore?',
 'Good to begin well, better to end well.',
 'How many of you believe in psycho-kinesis? Raise my hand.',
 'Imagination rules the world.',
 'Keep your face to the sunshine and you will never see shadows.',
 'Listen to everyone. Ideas come from everywhere.',
 'Man is born to live and not prepared to live.',
 'No one can walk backwards into the future.',
 'One of the first things you should look for in a problem is its positive side.',
 'Pick battles big enough to matter, small enough to win.',
 'Remember the birthday but never the age.',
 'Success is failure turned inside out.',
 'The harder you work, the luckier you get.',
 'Use your eloquence where it will do the most good.',
 'What's hidden in an empty box?',
 'Your reputation is your wealth.'
  ]

  return JsonResponse({
 'data': random.choice(fortunes),
 'status': 'awesome'
  })

Как и в нашем примере с Flask, метод fortune() в представлении Django вернет JSON-ответ, содержащий случайное состояние и базовый ответ о состоянии. Далее нам нужно определить наши маршруты. В то время как Flask обрабатывает все это в одном файле, Django предпочитает хранить маршруты в файле urls.py. Поскольку этот файл не включен в окружении приложений fortune, мы сначала создадим его и добавим следующий код:


from django.conf.urls import url
from . import views

urlpatterns = [
  url(r'^$', views.fortune, name='fortune'),
]

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


from django.conf.urls import url
from django.contrib import admin
from django.conf.urls import include

urlpatterns = [
 url(r'^admin/', admin.site.urls),
 url(r'^fortune/', include('fortune.urls')),
]

Как вы можете видеть, наш новый файл urls.py был включен в пространство имен fortune/ нашего основного файла маршрутов. Это означает, что в то время как наш файл fortune/urls.py указывает, что наш метод fortune() должен выполнять только корневой путь, этот корневой путь фактически ограничен указателем fortune/ в соответствии с нашим основным файлом маршрутов. Если бы мы затем посетили нашу новую конечную точку API http://127.0.0.1:8000/fortune, мы должны увидеть ответ, похожий на наш пример Flask.

Flask против Джанго — что лучше?

Учитывая наш пример с Fortune, вам будет сложно найти кого-то, кто будет утверждать, что решение Django проще, чем решение Flask. Но эти две структуры потрясающе отличаются по дизайну. Django — это невероятно надежное решение для веб-приложений, которое подходит не только для создания API-интерфейсов REST. С Django (почти) из коробки можно сделать практически все, что делает его идеальным выбором для разработчиков, которые точно знают, что они хотят построить, и не хотят возиться со сборкой стандартных компонентов с нуля.

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

Поделитесь с другими:

Чем Джанго лучше/хуже Фласка?

Что лучше: ложка или вилка? Наушники или колонки? Тапочки или сапоги? Это звучат примерно так же нелепо, как и вопрос про фласк и джанго. Вместо этого лучше спросить «Чем Flask отличается от Django?» и «Когда мне использовать Flask, а когда — Django?». Надо разобраться.

Основные отличия

  • Flask — легковесный и гибкий фреймворк. Он пуст чуть более, чем полностью (даже ORM надо отдельно устанавливать, ууууууу). Это позволяет выбирать модули под конкретные задачи и устанавливать их по мере необходимости.

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

Архитектура

Flask

Нет жёсткой структуры. Можно поселить модели, контроллеры и инициализацию в одном файле, можно — в разных. Изначально проект состоит из пустой папки. Структура формируется по ходу разработки, у каждого получается что-то своё. Вот как получилось у Мигеля Гринберга, автора Flask Mega-Tutorial:

project\
  env\
    <virtual environment files>
  app\
    static\
    templates\
    __init__.py
    views.py
  tmp\
  run.py

Django

Состоит из проекта, который делится на приложения. Проект — корневая папка и глобальные настройки. Приложения — это функционал сайта, разбитый по разным модулям. У каждого проекта они свои. Примеры приложений: users отвечает за поведение и модели пользователей, API предоставляет методы для внешнего взаимодействия с сайтом и т.п. С непривычки такая система может показаться непонятной и сложной. Зато так выглядит 95% сайтов на джанго, что упрощает чтение чужого кода.

Новый проект создаётся при помощи команды django-admin startproject project_name. Фреймворк создаёт все необходимые файлы сам. Пример типичной джанги:

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

Расширение

Flask

Устанавливается практически пустым, но легко расширяется сторонними батарейками. Обычно для решения одной задачи есть несколько батареек: выбор зависит от размера команды разработчиков и нагрузки на приложение. Так фреймворк становится гибким, а проект на Фласке — крафтовым.

Django

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

Масштабирование

Flask

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

Django

Расширяется приложениями, теми которые были в параграфе про архитектуру. Быстрое масштабирование — часть философии фреймворка, поэтому стурктура проекта строится на приложениях с самого начала. Они ни к чему не привязаны и могут использоваться в разных проектах (но на практике такое редкое удаётся).

Работа с БД

Flask

Нет собственной ORM, поэтому обычно подключается библиотека SQLAlchemy (есть и альтернативы, но мы их опустим). Там происходит что-то страшное: для создания/изменения записи надо создать объект, добавить его в сессию и закоммитить:

bob = User(name='Bobby', age=1)
session.add(bob)
session.commit()

А вот как выглядят связи между таблицами (внешние ключи):

collection = db.relationship('Album', secondary=collection,
                             primaryjoin=(collection.c.user_id == id),
                             secondaryjoin=(collection.c.album_id == Album.id),
                             backref=db.backref('user\'s collection', lazy='dynamic'),
                             lazy='dynamic')

Чё?

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

query = session.query(User, Role)
query = query.join(UserRole, UserRole.user_id == User.id)

TL;DR Алхимия сложная, но это компенсируется гибкостью.

Django

Комплектуется встроенной Django ORM. Она проще Алхимии: всё уже настроено и работает, не нужно думать о сессии, ещё и Active Record приправлено. Короче говоря, запросы к БД выглядят как работа с объектом:

>>> User.objects.get(id=13)
<User: 'Sarah Connor'>
>>> User.objects.filter(job__contains='director').aggregate(Avg('salary'))
{'salary__avg': 534.35}

Так выглядит создание записи:

bob = User.objecsts.create(name='Bobby', age=1)

А так — внешний ключ:

user = models.ForeignKey(BlogUser)

Работать с такими запросами проще и приятнее. Проблемы с Active Record возникают, когда нужно что-то сложнее. В Django ORM можно написать хитрые джоины на чистом SQL, но это не DRY, лишает ORM смысла и вообще. А отковырять стандартную ORM ОЧЕНЬ непросто.

То, что лучше подходит под нужды проекта. Вот мои рекомендации:

Выбирай Flask, если…

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

Выбирай Django, если…

  • Проект прямолинейный. Блог, магазин, новостной портал — для всего этого есть очевидный способ реализации.
  • Заранее известно, что проект будет большой
  • Разрабатывать будет большая или средняя команда, которая до этого не работала вместе
  • Лень подбирать модули
  • Любишь фильмы Тарантино

Flask

  • Flask book от дяди Мигеля. Можно купить или скачать Торрент эдишн. Если туго с английским — книга переводилась и издавалась в России.
  • Flask Mega Tutorial Устаревшая версия Flask Book, но местами всё ещё годная. Зато есть новое переиздание этого туториала, а на хабре есть его русский перевод.

Django

Django или Flask? Рекомендация из моего опыта. 

По моему опыту, общая проблема с приложениями, управляющими данными с помощью Python — это незнание, какой инструмент использовать для какой работы. Я думаю, что само собой разумеется, что использование правильного инструмента для работы — это большая часть того, что мы делаем. Трудно понять, с чего начать, если можно было начать где угодно. Однако я снова и снова сталкивался с вопросом: «Следует ли мне изучать Flask или Django?» Короткий ответ: и то и другое!

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

Django

Все мы слышим безумные истории о некоторых из крупнейших веб-сайтов на Земле, использующих Django. И на это есть веские причины, поскольку Django не только почитаем, но и довольно удобен в использовании. Сильные стороны Django заключаются в цели, которую он ставит перед собой. Django отлично подходит для создания полноценного веб-приложения на Python. Хотя вы, безусловно, можете делать некоторые вещи более низкого уровня с Django, я думаю, что для многих людей Django сияет в форме быстрой разработки и системы auth/permission Django, которая встроена в сам пакет.

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

Flask

Flask, безусловно, очень популярный выбор как для Data Nuts, так и для Data Scientists. Flask — более легкий из двух. Flask часто использует подход «создание с нуля» для большей части вашего веб-сайта. Хотя это немного затрудняет разработку полномасштабных веб-приложений, это также раскрывает мощь Flask и одно очень большое различие между ними.

Flask легкий. Это делает Flask отличным выбором для конечных точек, запросов и конвейерной обработки. Многие науки о данных фокусируются на создании сложных алгоритмов и ROC/AUC, но одна из самых популярных и игнорируемых сторон науки о данных — это поток данных.

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

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

Итак … Почему оба?

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

Что касается меня лично, мне нравится использовать все инструменты, которые я могу, когда они мне нужны. Мне нравится разрабатывать во Flask, как и в Django. Если бы мне нужно было ответить на HTTP-запрос, я бы сразу погрузился в приложение на основе Flask. Если бы я создавал следующий Facebook или сайт форума, я бы определенно использовал Django.

Если вам нужно было выбрать один:

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

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

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

Django vs Flask? — Хабр Q&A

На самом деле мене сложно понять приемущества Flask по сравнению с Django для большого приложения. Но почему-то во многих статьях и докладах выливают много негатива в сторону django. Вот одного из немногих докладов где flask не расхваливают до небес: https://www.youtube.com/watch?v=7SmWn05m1Tk

Мое мнение с перечислением плюсов Django. Скорее всего эти минусы связанны с тем что я не до конца вкурил Flask или пытаюсь сделать из него Django.

1) В Django нет такой любви к глобальным переменным как в Flask.

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        do_the_login()
    else:
        show_the_login_form()

Вот пример из документации. Как по мне обращение к request выглядет жутко. И соответственно рождается вопрос а что делать если мне потребуется использовать request за приделами login скажем в методе do_the_login.
Должен ли я передавать request в параметор метода или так-же продолжать использовать глобальную переменную request. Первый вариант мне кажется правильным, так-как в противном случае зависимости метода получаются неявными. Но если придерживаться первого варианта то непонятно зачем глобальные переменные были добавленны изначально.

В django такого нет и все параметры передаются явно.

2) Структура проекта.
Создается такое впечатление что количество разных способов организовать код на Flask равно количеству приложений написанных на Flask.
Это очень неприятно так-как:

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

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

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

4) Админка
Вместе с django вы получите отличную админку, которую не стыдно показать клиенту. Flask Admin Не обладает таким количеством функций как админка Django + Админка django может быть очень круто расширенна огромным количеством плагинов. Например вы можете добавить плагин который быдет отслеживать все изменения в админке с удобным отображением этих изменений и возможностью откатиться на более раннию версию если что-то пошло не так.

5) Отличная документация
Это касается не только документации Django но и большинства популярных модулей. Если сам Flask и может заявить что обладает хорошей документацией, но вот модули, которыми вы скорее всего будете пользоваться, увы похвастаться этим не могут. Таким образом очень часто приходится выяснять какие-то моменты работы можуля в исходном коде, issue, Stack Overflow

Часто Django ругаю за жесткую привязку к ORM или к шаблонизатору. Частично это правда:
Вы можете отказаться от стандартной ORM но вы должны понимать что это решение лишит вас огромного количества плюшек. Мое личное мнение: в Flask абсолютно тоже самое, если вы не хотите/не можете использовать SQL Alchemy.
По поводу шаблонизатора в Django вы можете использовать то что вам нравится, вот пример реального проекта в котором используется Mako — https://github.com/edx/edx-platform

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

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

Flask или Django для новичка?

Вопрос:

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

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

Так что я должен начать с Flask, зная, что в конце концов узнаю Django? Или просто начните изучать Django?

Ответ №1

Я бы порекомендовал вам начать с Flask. С помощью Flask вы будете явно писать свои собственные функции маршрута, сделать ваши маршруты визуальными шаблонами и т.д., Используя все функции Python, с которыми вы уже знакомы. Мало «магии». Вы можете точно видеть, как все происходит, и понять, почему это происходит. Документация с флягами также довольно приятная и лаконичная, поэтому вы можете прочитать ее и узнать через несколько часов в Фляксе, провести несколько вечеров, чтобы научиться делать полноценное приложение, а затем перейти к Django. Время инвестиций мало, это даст вам отличную подготовку к Django, и вы узнаете о большой микро-каркасе. Я иногда создаю прототипы проектов в Flask, прежде чем создавать их в Django.

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

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

Ответ №2

У меня была такая же ситуация, когда я хотел попробовать Python для веб-разработки:) И я пошел с Django. Хотя иногда трудно понять всю магию, стоящую за Django, приятно и полно полезных вещей. Если вам нравятся ORM, у Django есть хороший. Он также имеет панель администратора. Общий вид тоже хорошая вещь:) В принципе, это очень хорошая структура, и когда вы запустите свое первое приложение онлайн, разработка второго будет интересной:)

Но через какое-то время я нашел Flask. И теперь я работаю с этим. Зачем? Потому что иногда мне просто нравится создавать и создавать вещи самостоятельно, я хочу узнать и понять, как все работает. Фланец — это минималистическая вещь, и вы создадите все «магические» Django уже есть. Я рад, что начал с Django, потому что теперь я могу использовать некоторые принципы оттуда в своих приложениях Flask. У Flask меньше пользователей, но пока это не было для меня большой проблемой. У него также есть расширения, которые уже помогают вам с некоторыми вещами. И хотя ORM не построен так глубоко, как в Django, мне это нравится, потому что я ненавижу ORM (назовите меня старомодным, но я все же считаю, что исходный SQL намного эффективнее в моих случаях).

Лучше всего попробовать обеими и выбрать тот, который вам нравится. Опытные ребята могут дать советы, что один лучше другого, но я бы сказал — попробуйте! Если вы видите, что ломаете ноги с Django, возможно, Flask поможет. Или наоборот.

Удачи!

Ответ №3

Колба — это микро-каркас, но это не упрощает.

Он просто не делает много предположений об экосистеме/библиотеках
вы собираетесь использовать. Это оставляет его вам.

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

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

Я согласен с Даниэлем. Я бы пошел прямо в Django, если бы был на вашем месте.

Ответ №4

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

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

Это все субъективно и только мое мнение.

Ответ №5

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

Кроме того, вы заявляете, что ищете карьеру в области веб-разработки и набор инструментов для этого. Я считаю, что даже сегодня работодатели часто в лучшем случае «просто слышали о» Джанго. Убедившись, что кто-то нанимает вас и ваш рацион, Flask может быть еще более трудным.

Мои 2центы должны были застрять в Django и создавать некоторые простые сайты (Опросы, блог и т.д.), тогда, когда вам будет удобно, вернитесь и снова создайте их с помощью Flask. В конце концов, все это Python.

Ответ №6

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

Django (mvc) структура для проекта на flask / Хабр

Всем привет!

Когда я впервые столкнулся с Flask, у меня сразу возник вопрос по построению архитектуры проекта.

Прочитав пару статей на Хабре (https://habr.com/ru/post/275099/ и https://habr.com/ru/post/421887/), я вспомнил свой опыт создания проектов на Django, и решил сделать инструмент, благодаря которому не придется задумываться об архитектуре, но при этом можно будет использовать все возможности Flask.

Установка

$ pip install Flask-DJ

Создание проекта

Создать проект можно либо с помощью консоли (для шаблонов и статических файлов используются флаги -t -st)

$ flask-dj startproject app

Либо можно создать файл setup.py

(для шаблонов и статических файлов используются флаги

need_templates=True, need_static=True).

from flask_dj import startproject
from os import getcwd
your_project_name = 'app'
project_dir = getcwd()
startproject(your_project_name, project_dir)

В результате должна получится следующая структура

(static и templates появятся при указании соответствующих флагов)

app/
    app/
        __init__.py
        config.py
        urls.py
    manage.py

Создание приложения

Приложением в данном случае называется модуль (элемент приложения).

Для создания необходимо прописать следующую команду (вместо index поставить имя вашего приложения).

$ python manage.py startapp index

После выполнения у проекта будет следующая структура:

app/
    app/
        __init__.py
        config.py
        urls.py
    index/
          forms.py
          models.py
          urls.py
          views.py
    manage.py

Создаем принимающую (view) функцию

Все гайды принято начинать с Hello world, мы не будем исключением:

# index/views.py
def index():
    return "Hello world"

Создаем URL для нашей функции

Создаем относительный путь внутри index:

# index/urls.py
from utils.urls import relative_path
from .views import index

urlpatterns = [
    relative_path("", index),
]

Добавляем наше приложение к глобальному пути:

# app/urls.py
from utils.urls import add_relative_path, include

urlpatterns = [
    add_relative_path("/", include("index.urls")),
]

Запускаем сервер

$  python manage.py runserver

Если все шаги сделаны верно, то мы увидим следующее

P.S.

Надеюсь данная статья была для вас полезной.

Если вас заинтересовала данная библиотека, то вот ссылки на нее:

Upd1 Спасибо buriy за полезные замечания

Flask против Django в 2020 году: какой фреймворк выбрать?

Хотите знать, какой фреймворк лучше использовать для веб-разработки, Flask или Django? Многие веб-фреймворки на основе Python позволяют разработчикам быстро создавать масштабируемые приложения. Эти фреймворки могут все, от простых до сложных веб-сайтов. Из множества популярных вариантов, Django vs Flask являются наиболее обсуждаемыми — и в основном потому, что оба они в чем-то похожи, а во многих других отличаются! Это приводит к сравнению обоих, и, хотя каждая из этих сред веб-разработки имеет свои уникальные особенности, есть много факторов, на которые вы должны обратить внимание, прежде чем выбирать одну для своих приложений.

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

Django тяжеловесен, тогда как с Flask вам придется все создавать самостоятельно. Django существует с 2005 года; Flask продолжил свое существование в 2010 году — примерно через 5 лет. Однако на сегодняшний день оба являются ведущими фреймворками в мире Python. Их растущая популярность очевидна, если учесть количество вопросов, которые люди задают об обеих этих платформах на различных технических форумах.

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

Джанго

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

Особенности Django

Некоторые особенности Django —

  • Это универсальная платформа, которую можно использовать для любого веб-сайта (социальная сеть, новостной сайт, управление контентом и т. Д.) С контентом в любом формате, например HTML, XML, JSON и т. Д. Он работает в тандеме с любым фреймворком на стороне клиента.
  • Это безопасная платформа, которая автоматически управляет стандартными функциями безопасности, такими как управление учетными записями пользователей, управление транзакциями, подделка межсайтовых запросов, кликджекинг и многое другое.
  • Масштабируемость и ремонтопригодность. Django следует шаблонам проектирования и принципам повторного использования и поддержки кода. Главный принцип «Не повторяйся» гарантирует отсутствие дублирования. Поскольку Django представляет собой структуру на основе компонентов, каждый уровень не зависит от другого, что делает приложение масштабируемым на любом уровне.
  • Django портативен. Он написан на Python, который в настоящее время является самым популярным языком программирования, который может работать где угодно.

Колба

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

Особенности Flask

Некоторые особенности Flask —

  • Предоставляет вам (разработчику) полный контроль над решениями по созданию приложения на этапе разработки (реализации).
  • Поставляется со встроенным сервером разработки и быстрым отладчиком
  • Последовательный и аккуратный API
  • Простые и гибкие конфигурации
  • Обработка запросов RESTful и HTTP
  • Поддержка тестирования интегрированных модулей
  • Flask имеет две основные зависимости — Werkzeug и Jinja2, которые обеспечивают сильную поддержку WSGI и шаблоны соответственно.

Django vs Flask: прямое сравнение

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

Шаблонизатор Jinja2 в

Приложение

Джанго Колба
Веб-фреймворк полного стека, который следует подходу с включением батарей. Легкий каркас с минималистичными элементами.
Разработчики уже имеют доступ к наиболее распространенным функциям, ускоряющим разработку. Разработчики могут исследовать ядро ​​приложения и контролировать его.
Django поставляется с готовой к использованию структурой администрирования, которую можно настроить. Flask не имеет такой функции для выполнения административных задач.
Поставляется со встроенным механизмом шаблонов, который экономит много времени на разработку. Flask основан на шаблоне Django.
Он позволяет пользователям разделить один проект на несколько небольших приложений, что упрощает их разработку и сопровождение. Каждый проект может быть одним приложением, однако в одно приложение можно добавить несколько моделей и представлений.
Инструмент Django-admin — это встроенный инструмент начальной загрузки, с помощью которого разработчики могут создавать веб-приложения без какого-либо внешнего ввода. Функции администратора не так заметны, как в Django.
Встроенная система ORM позволяет разработчикам использовать любую базу данных и выполнять стандартные задачи БД без написания длинных запросов. С Flask разработчики должны работать с разными базами данных, используя системы ORM для Python и SQLAlchemy в качестве набора инструментов SQL. SQL-запросы должны быть написаны для общих задач.
Django — это готовый к работе фреймворк. Хотя некоторые люди так утверждают, Flask является однопоточным и может не работать слишком хорошо при большой нагрузке.Перейдите по этой ссылке, чтобы узнать больше.
Django считается более популярным, поскольку он предоставляет множество готовых функций и сокращает время на создание сложных приложений. Flask — хорошее начало, если вы только начинаете заниматься веб-разработкой. Есть много веб-сайтов, построенных на фляге и получающих большой трафик, но не так много по сравнению с сайтами в Django.
Django не подходит для проектов, в которых требования меняются динамически. С помощью Flask простое приложение может быть позже изменено, чтобы добавить больше функций и сделать его сложным.Это обеспечивает гибкость для быстрого расширения приложения.
Разработчики не могут позволить себе неизменную гибкость, как модули, предоставляемые Django. Разработчики могут свободно использовать любые плагины и библиотеки, а также гибко создавать функциональные возможности.
Django подходит для более значительных проектов, требующих большой функциональности. Для более простых проектов функции могут быть передозировкой. Flask — это простой, непонятный фреймворк; это не решает, как должно выглядеть ваше приложение — это делают разработчики.
Django подходит для более крупных проектов, требующих большой функциональности. Для более простых проектов особенности могут быть передозировкой. Простые приложения можно легко создавать и не требовать слишком много кода.
Фреймворк Django гарантирует, что разработчики используют лучшие практики, поскольку у всего есть шаблон. Flask более открытый, и разработчики могут следовать или не следовать лучшим практикам.
Для той же функциональности Django требуется более чем в 2 раза больше строк кода, чем Flask. Flask требует гораздо меньше строк кода для простой задачи.

Сводка

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

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

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

Еще читают:

.

Flask против Django: выберите свой Python Web Framework

Содержание

Flask или Django?

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

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

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

TL; DR Flask и Django: различия

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

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

Вот краткий список основных отличий, которые могут повлиять на ваше решение:

  • Объект запроса — Flask использует локальные переменные потока, в то время как Django передает запрос туда, где он нужен.
  • Forms — Django поставляется с ними встроенными, и они интегрируются с ORM и сайтом администратора.Flask не поддерживает формы по умолчанию, но вы можете использовать WTForms, чтобы заполнить пробел.
  • База данных — Django поставляется с Django ORM и системой миграции, которая хочет управлять вашей базой данных. Flask не делает никаких предположений о базе данных, но есть инструменты, такие как SQLAlchemy, которые предоставляют аналогичные функции (возможно, больше).
  • Аутентификация и разрешения — Django поставляется с приложением аутентификации, которое предоставляет реализацию по умолчанию для управления пользователями и разрешениями.Flask предоставляет безопасные файлы cookie как инструмент для вашей собственной реализации.
  • Admin Site — Django поставляется с полностью интегрированным интерфейсом администратора для управления данными приложения. Во Flask нет ничего подобного, но Flask-Admin — популярное расширение, которое можно использовать для создания аналогичного инструмента администрирования.

Хотите кодировать быстрее ?

Kite — это плагин для PyCharm, Atom, Vim, VSCode, Sublime Text и IntelliJ, который использует машинное обучение, чтобы предоставить вам завершение кода в реальном времени, отсортированное по релевантности. Начните кодирование быстрее сегодня .

Что такое Джанго?

На веб-сайте

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

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

Некоторые компании, использующие Django:

  • Instagram
  • Pinterest
  • Удеми
  • Coursera
  • Zapier

Что такое Flask?

Веб-сайт Flask описывает Flask как «микрофреймворк для Python, основанный на Werkzeug, Jinja 2 и добрых намерениях» и демонстрирует слоган «веб-разработка, по одной капле за раз.Еще раз, это дает вам хорошее представление о пространстве, которое Flask пытается заполнить в переполненном мире веб-фреймворков Python.

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

Компании, использующие Flask:

  • Netflix
  • Lyft
  • Reddit
  • Зиллоу
  • MailGun

Как эти разные подходы работают?

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

Среда разработки

Сервер разработки

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

Утилиты командной строки

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

Тестирование

Обе платформы предлагают инструменты, основанные на встроенной среде unittest python, чтобы упростить тестирование вашего веб-приложения. У каждого есть тестовый клиент, который позволяет вам легко отправлять тестовые запросы на ваши конечные точки и проверять ответ для программной проверки правильности поведения. Поскольку и Flask, и Django используют встроенную среду unittest python, вы можете поменять местами запуска тестов по умолчанию и настроить тесты по своему усмотрению.

Обработка запросов

Маршруты и виды

И Flask, и Django позволяют обрабатывать запросы, определяя представления либо как функцию, либо как класс, а затем сопоставляя маршруты (пути URL) с этими представлениями.

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

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

Следующие примеры маршрутизации пути «home /» иллюстрируют разницу.

В Django:

  из django.urls путь импорта 

из .views import HomeView

urlpatterns = [
путь ('дом /', HomeView.as_view (), name = 'дом'),
]

  из flask import Flask, render_template 

app = Flask (__ name__)

@app.маршрут ('/ home /')
def home_view ():
"" "
Определение Home View
"" "
return render_template ("home.html")

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

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

Объект запроса

И Flask, и Django имеют «объект запроса», который содержит данные о запросе, но то, как этот объект становится доступным с помощью инфраструктуры, сильно отличается.

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

Flask, с другой стороны, использует совершенно другой подход и использует локальную переменную потока для хранения запроса. Это означает, что если вам нужен доступ к объекту запроса, вам просто нужно импортировать объект запроса из flask и ссылаться на него в своем коде.Плюс такого подхода в том, что вам не нужно передавать запрос. Если хотите — просто получите к нему доступ. Довольно большой недостаток заключается в том, что если вы не будете осторожны, вам может быть сложно узнать, находитесь вы в контексте запроса или нет. Это приводит к тому, что многие новые пользователи Flask получают ошибки об отсутствии контекста запроса при попытке запустить свой код.

шаблоны

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

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

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

Джиндзя2:

  {% для элемента в объекте.get_items ()%}
  {{пункт}}
{% endfor%}  
  {% для элемента в obj.get_items%}
  {{пункт}}
{% endfor%}  
Статические файлы

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

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

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

Джанго:

  {% статической нагрузки%}
  
    

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

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

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

Хотите кодировать быстрее ?

Kite — это плагин для PyCharm, Atom, Vim, VSCode, Sublime Text и IntelliJ, который использует машинное обучение, чтобы предоставить вам завершение кода в реальном времени, отсортированное по релевантности. Начните кодирование быстрее сегодня .

Формы

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

Формы

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

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

Поддержка баз данных

Реляционное сопоставление объектов, миграции

Django поставляется с Django ORM (Object Relational Mapping). Вероятно, это одно из самых спорных решений, которые принимает Django. Некоторые люди любят Django ORM за его простоту, а некоторые ненавидят его, ссылаясь на недостатки и желание управлять базой данных за вас. Однако нет никаких сомнений в том, что он позволяет очень быстро приступить к работе, и в его простоте есть много возможностей.

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

Django ORM очень самоуверен и имеет некоторые определенные ограничения, но его можно настраивать, расширять, и, в конечном итоге, вы можете прибегнуть к необработанному SQL, если вам когда-либо понадобится преодолеть эти ограничения.

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

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

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

Аутентификация и разрешения

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

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

Сайт администратора

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

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

Безопасность

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

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

Заключение

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

Чем может помочь кайт?

Независимо от того, какой фреймворк вы выберете, Kite может помочь вам начать работу быстрее. Многое из того, что вы делаете при настройке нового проекта, — это импорт и настройка правильных компонентов. Одна из самых неприятных вещей — это знать, где найти различные компоненты, которые вы хотите импортировать. Благодаря интеллектуальному завершению строк кода Kite помогает вам сэкономить много времени при начале работы и на протяжении всей разработки вашего приложения. Загрузите Kite бесплатно, чтобы попробовать.

.

Flask против Django — горячие дебаты о разработке Python, раздел

Django vs Flask — столкновение двух основных платформ Python

Давайте узнаем ответ на самый популярный вопрос многих разработчиков — Что выбрать: Django или Flask для удовлетворения требований различных проектов Python?

Сделаем это путем сравнения их по определенным параметрам. Эти параметры учитывают отрасли при выборе фреймворка.

Эта статья обязательна для разработчиков, знающих Django или Flask. Это объективное сравнение двух фреймворков — Django и Flask . Мы увидим как сильные, так и слабые стороны Django и Flask.

Flask vs Django — И победитель…?

Python стал популярным языком для веб-разработки. Существует ряд фреймворков на основе Python. Эти фреймворки удовлетворяют потребности различных проектов. От веб-разработки полного стека до легких веб-приложений.

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

1. Различное использование фреймворка

Django — это полнофункциональный веб-фреймворк. Вы можете создавать полнофункциональные мощные веб-приложения в Django. С другой стороны, Flask больше подходит для одностраничных приложений. Flask — это структура WSGI. В основном он используется для легких веб-приложений, где требуется высокая скорость. Он был разработан как оболочка для Jinja и Werkzeug.Flask позволяет разработчику расширить фреймворк. Django — это фреймворк с батарейками, который поставляется с большинством предустановленных функций.

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

2. Структура проекта

Flask следует архитектуре MVC, тогда как Django следует архитектуре MVT, и обе имеют свои основные различия.Flask Project — это единое приложение, в которое вы можете добавлять бесчисленное количество представлений и моделей. Проект Django — это набор небольших приложений. Его конструкция более модульная и обеспечивает быстрое развитие.

Дизайн

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

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

3. Поддержка базы данных

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

Flask не предоставляет встроенного ORM, такого как Django. От разработчиков зависит, хотят они базы данных или нет.Поскольку оба они являются фреймворками Python, в обоих случаях используются коннекторы Python. Flask использует SQLAlchemy для подключения к базе данных.

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

Знаете ли вы — как подключить базу данных MySQL к Django Project

4.Гибкость

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

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

5. Механизм шаблонов

Шаблонизатор — это то, что будет генерировать HTML для веб-страницы. Оба фреймворка имеют похожие механизмы создания шаблонов. Flask использует движок шаблонов Jinja2, который похож на движок шаблонов Django. Уникальна интеграция Django с этими технологиями. Django упрощает разработчикам прямое написание DTL (язык шаблонов Django) .

Flask расширяет Jinja2, тогда как Django имеет встроенный язык. Разработчики также могут использовать Jinja2 Templating Engine в Django.Большинство предпочитает использовать DTL с Django из-за других функций целостности, которые он предоставляет.

Вы должны научиться создавать шаблоны Django с использованием HTML

6. Использование ORM

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

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

Есть ли вопросы в статье Flask vs Django до сих пор? Поделитесь своим мнением в разделе комментариев.

7. Пакет функций и минималистичный дизайн

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

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

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

8. Монолитный против диверсифицированного

Django часто называют монолитным. Это верное заявление. Дизайн и структура в Django должны быть такими же. Разработчик должен соблюдать определенные правила, чтобы запустить Django Project .Django работает иначе. Разработчики называют этот термин The Django Way . Вы должны определить модели и представления из предопределенных классов. Это плюс для отраслей. Разработчикам становится проще читать и поддерживать код. Кроме того, любой вновь нанятый разработчик легко разберется с проектом. Поэтому Django больше используется в промышленности.

Flask более разнообразен по сравнению с Django. Здесь разработчики могут использовать множество веб-инструментов. Эти веб-инструменты могут значительно улучшить ваш проект в соответствии с их потребностями.Поэтому Flask нравится большинству разработчиков благодаря широкому набору веб-инструментов.

9. Документация — Параметр разработчика

Техническая документация — фактор для разработчиков. С моей точки зрения, документация Django — одна из лучших, что я читал. Они проделали огромную работу с самого начала поддержки документации. Документы Flask тоже впечатляют.

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

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

1. Сайт документации Flask

2. Также мы видим сайт документации Django

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

10. Встроенный интерфейс администратора

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

С другой стороны,

Flask не имеет ничего общего с Django-admin. Поскольку Flask — это минималистичный фреймворк, в нем ничего не предустановлено.

11. Средство начальной загрузки

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

12. Использование в Интернете

Эти фреймворки зарекомендовали себя со временем. Django немного длиннее, чем Flask на рынке. Приложения Django Статья содержит информацию о популярных веб-приложениях, таких как Spotify, YouTube, Instagram и т. Д. Flask также очень популярен и используется для общих портфелей.Существуют сайты с довольно высокой посещаемостью, такие как LinkedIn, Pinterest и т. Д., Которые используют фреймворк Flask.

13. REST API

Django имеет отличную поддержку сообщества, и то же самое касается Flask. Django по-прежнему занимает лидирующие позиции в REST API. REST API — это то, что есть в большинстве веб-приложений в Интернете. Facebook разработал новый фреймворк на основе Django. Django REST Framework расширен Django. Эта структура сэкономила Facebook много времени при создании REST API.

Сводка

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

Flask предназначен для людей, которые хотят разрабатывать свои собственные системы и правила. Django — для перфекционистов с дедлайнами. Я очень счастлив, что узнал их обоих.Админ Django необходим для сайтов, где используются базы данных. Flask — лучший фреймворк для одностраничных сайтов. Производительность Flask лучше для небольших проектов. Поскольку он не импортирует весь этот шаблонный код, такой как Django.

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

Можно сказать, что битва Django vs Flask получилась равной, поскольку у обоих есть свои особенности и особенности.Если у вас возникла какая-то путаница относительно обеих фреймворков, укажите их в разделе комментариев.

.

Django против Flask | Какой Python Framework лучше подходит для вашего приложения

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

Хорошо, давайте начнем с нашей первой темы.

Django

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

Flask

Flask — это облегченная микросхема веб-приложений WSGI (интерфейс шлюза веб-сервера). Он был разработан, чтобы помочь вам быстро и легко приступить к веб-разработке.Кроме того, он обеспечивает возможность масштабирования до сложных приложений. Изначально он начинался как простая оболочка для Werkzeug и Jinja, а теперь стал одним из самых популярных фреймворков веб-приложений Python.

Django против Flask

Тип фреймворка

Django — это тип фреймворка Full Stack, тогда как Flask подпадает под категорию фреймворка Micro.

База данных

Если вашему приложению требуется SQLite, PostgreSQL, MySQL или Oracle, вы должны предпочесть Django.С другой стороны, если вы используете NoSQL или вообще без базы данных, Flask — лучший выбор.

Размер проекта

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

Макет проекта

Django использует обычную структуру проекта, тогда как Flask использует произвольную структуру проекта.

Тип приложения

Django слишком хорош для создания полнофункциональных веб-приложений с использованием шаблонов на стороне сервера. Если вам просто нужен статический веб-сайт или веб-служба RESTful, которая питает ваше SPA или мобильное приложение, Flask — лучший выбор. Django вместе с Django REST Framework хорошо работает и в последнем случае.

RESTful API

Django REST Framework (DRF), один из самых популярных сторонних пакетов Django, представляет собой платформу, используемую для предоставления моделей Django через интерфейс RESTful. Он включает в себя все необходимое (представления, сериализаторы, проверка, аутентификация) и многое другое (API с возможностью просмотра, управление версиями, кеширование) для быстрого и простого создания API. Flask имеет ряд отличных расширений, таких как Flask-RESTful, Flask-Classful, Flask-RESTPlus для представлений, Flask-Marshmallow для сериализации, Flask-JWT, Flask-JWT-Extended для аутентификации.

Производительность

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

Компании, использующие их

Ниже перечислены компании, использующие Django:

Ниже перечислены компании, использующие Flask:

7 Django

0 Любая база данных, включая NoSQL

97

Размер проекта

Flask
Тип фреймворка

Полный стек

Micro

База данных SQLite, PostgreSQL, MySQL
Крупные проекты Небольшие и менее сложные проекты
Макет проекта Обычная структура проекта

Произвольная структура

Тип приложения Полнофункциональное веб-приложение действия с шаблонами на стороне сервера Статическое веб-приложение или веб-сервис RESTful, который питает ваш SPA или мобильное приложение
RESTful API Django Rest Framework (DRF) Flask-RESTful (представления), Flask Marshmallow ( Сериализация), Flask JWT (Auth)
Производительность Не лучше, чем Flask Лучше, чем Django
Компании, использующие их
  • Instagram
  • Pinterest
  • Udemy Course3

  • Zapier
  • Netflix
  • Lyft
  • Reddit
  • Zillow
  • MailGun

Заключение

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

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

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

Теперь, когда вы разобрались с темой Django против Flask , ознакомьтесь с Python Django Training от Edureka. Курс Edureka по Django поможет вам получить опыт работы с фреймворком Django REST, моделями Django, Django AJAX, Django jQuery и т. Д. Вы освоите веб-фреймворк Django, работая над вариантами использования в реальном времени, и получите сертификат Django в конце курса. .

Есть вопрос? Пожалуйста, укажите это в разделе комментариев к статье «Django Vs Flask», и мы свяжемся с вами как можно скорее.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *