Краткое изложение распространенных веб-фреймворков в Python

Python

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

PythonВозникло в конце восьмидесятых годов. Разработано Centrum Wiskunde & InformaticaGuido van Rossum, исследовательский центр математики и информатики в Амстердамском научном парке в Нидерландах. С тех пор Ван Россум стал влиятельной фигурой в разработке Python. Фактически, члены сообщества дали ему почетный титул: Доброжелательный диктатор на всю жизнь (BDFL).

После своего скромного начала Python стал одним из самых популярных серверных языков программирования в Интернете. Согласно W3Techs, он используется вМного сайтов с высокой посещаемостью, превосходя ColdFusion, PHP,и ASP.NET. Более 98% этих сайтов работают на Python 2.0, и чуть более 1% — на версии 3.0.

Фреймворки упрощают разработку

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

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

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

Django

DjangoВероятно, самый представительный фреймворк Python. Это платформа с открытым исходным кодом, которая следует архитектурному шаблону MMVC. Он получил свое название от Джанго Рейнхардта, французского композитора и гитариста, которого многие считают величайшим гитаристом в истории. В газете Lawrence Journal-World в Лоуренс-Сити, штат Канзас, работают два программиста, Адриан Головати и Саймон Уиллисон, которые разработали Django в 2003 году для разработки веб-программ для газет.

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

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

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

Создайте проект:

$ pip install django
$ django-admin startproject djdemo                                                   
 cd djdemo                                                                                                                               
$ django-admin startapp djapp                                                   
$ tree -L 3             
.
├── djapp
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── djdemo
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-37.pyc
│   │   └── settings.cpython-37.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

Ниже я привожу структуру каталогов Django одного из моих проектов. это классическая форма структуры каталогов django:

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

В Django много полезных строительных лесов

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver

Отличные ресурсы Джанго

TurboGears

TurboGears — это фреймворк, построенный на нескольких известных проектах Python, таких как SQLAlchemy, WebOb, Repoze, Genshi. В некотором смысле TurboGears объединяет несколько открытых платформ. Как и Django, он использует архитектуру MVC. Он также недавно включил «минимальный режим», который позволяет ему функционировать как микрофреймворк.

TurboGears был разработан в 2005 году Кевином Дангуром. Он выпустил его как проект с открытым исходным кодом в сентябре того же года. В 2013 году разработчики проекта перешли на поддержку Python 3, отказавшись от кода Pylons, который они когда-то написали. К преимуществам TurboGears относятся:

  • Агрегация поддерживается
  • Мощный объектно-реляционный картограф
  • Система транзакций поддерживает транзакции с несколькими базами данных
  • Поддержка нескольких баз данных
  • Используйте многократно используемые фрагменты кода в качестве шаблонов
  • Большая гибкость для взаимодействия с нестандартными компонентами
  • Разделение
  • Система шаблонов упрощает дизайн для дизайнеров

TurboGears

Официальный сайт ТурбоГирс

Установить

$ pip install tg.devtools

$ gearbox --help
usage: gearbox [--version] [-v | -q] [--log-file LOG_FILE] [-h] [--debug]
               [--relative]

TurboGears2 Gearbox toolset

optional arguments:
  --version            show program's version number and exit
  -v, --verbose        Increase verbosity of output. Can be repeated.
  -q, --quiet          Suppress output except warnings and errors.
  --log-file LOG_FILE  Specify a file to log output. Disabled by default.
  -h, --help           Show this help message and exit.
  --debug              Show tracebacks on errors.
  --relative           Load plugins and applications also from current path.

Commands:
  help           print detailed help for another command
  makepackage    Creates a basic python package
  patch          Patches files by replacing, appending or deleting text.
  quickstart     Creates a new TurboGears2 project
  scaffold       Creates a new file from a scaffold template
  serve          Serves a web application that uses a PasteDeploy configuration file
  setup-app      Setup an application, given a config file
  tgext          Creates a tgext.* package

Создать проект

$ gearbox quickstart tgdemo
// 会生成很多文件

.
├── MANIFEST.in
├── README.txt
├── __pycache__
│   └── setup.cpython-37.pyc
├── development.ini
├── migration
│   ├── env.py
│   ├── script.py.mako
│   └── versions
│       └── empty.txt
├── setup.cfg
├── setup.py
├── test.ini
├── tgdemo
│   ├── __init__.py
│   ├── config
│   │   ├── __init__.py
│   │   ├── app_cfg.py
│   │   ├── environment.py
│   │   └── middleware.py
│   ├── controllers
│   │   ├── __init__.py
│   │   ├── controller.py.template
│   │   ├── error.py
│   │   ├── root.py
│   │   └── secure.py
│   ├── i18n
│   │   └── ru
│   ├── lib
│   │   ├── __init__.py
│   │   ├── app_globals.py
│   │   ├── base.py
│   │   └── helpers.py
│   ├── model
│   │   ├── __init__.py
│   │   ├── auth.py
│   │   └── model.py.template
│   ├── public
│   │   ├── css
│   │   ├── favicon.ico
│   │   ├── fonts
│   │   ├── img
│   │   └── javascript
│   ├── templates
│   │   ├── __init__.py
│   │   ├── __pycache__
│   │   ├── about.xhtml
│   │   ├── data.xhtml
│   │   ├── environ.xhtml
│   │   ├── error.xhtml
│   │   ├── index.xhtml
│   │   ├── login.xhtml
│   │   ├── master.xhtml
│   │   └── template.xhtml.template
│   ├── tests
│   │   ├── __init__.py
│   │   ├── functional
│   │   └── models
│   └── websetup
│       ├── __init__.py
│       ├── bootstrap.py
│       └── schema.py
└── tgdemo.egg-info
    ├── PKG-INFO
    ├── SOURCES.txt
    ├── dependency_links.txt
    ├── entry_points.txt
    ├── not-zip-safe
    ├── requires.txt
    └── top_level.txt

22 directories, 48 files

Приведенный выше 👆 — это форма кода, сгенерированная пакетом python, которая удобна для упаковки и распространения.

Пользователям нужно только изменить код в следующем каталоге

Пример использования TurboGears

 from wsgiref.simple_server import make_server
 from tg import expose, TGController, AppConfig

 class RootController(TGController):
      @expose()
      def index(self):
          return "<h1>Hello World</h1>"

 config = AppConfig(minimal=True, root_controller=RootController())

 print "Serving on port 8080..."
 httpd = make_server('', 8080, config.make_wsgi_app())
 httpd.serve_forever()

web2py

web2py— это платформа с открытым исходным кодом, которая позволяет разработчикам быстро создавать динамические и интерактивные веб-сайты. Целью его разработки является устранение множества повторяющихся задач программирования, которые замедляют разработку, таких как создание базовых таблиц. Изначально он разрабатывался как инструмент. Позже ему подражали Django и Ruby on Rails, фреймворк для Ruby. Как и TurboGears, он использует архитектуру MVC.

Оригинальный исходный код был открыт в 2007 году Массимо ДиПьерро. В то время он назывался Enterprise Web Framework (EWF). Он несколько раз менял свое имя из-за конфликтов имен и, наконец, был определен как текущий web2py в версии 1.16. Приложения, разработанные с использованием web2py, включают систему управления контентом Movuca, музыкальный веб-сайтNoobMusic, средство сетевой диагностики LinkFindr иInstant PressПлатформа для блогов. В 2011 году web2py был назван лучшим программным обеспечением для разработки с открытым исходным кодом.Премия Босси. На второй год он выиграл InfoWorld’sПремия «Технология года».

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

Некоторые преимущества web2py включают в себя:

  • Простота использования. Как надежная полнофункциональная платформа, она работает без дополнительных зависимостей, проста в освоении и развертывании, а также устанавливается без каких-либо файлов конфигурации после загрузки, установки и готовности к использованию. Разработчики получают базу данных, веб-среду IDE, веб-сервер и мощный API, состоящий из нескольких основных объектов.
  • Превосходная безопасность - язык шаблонов Web2py снижает опасность хакеров, использующих межсайтовые сценарии, уровень абстракции имеет проверки правильности полей формы при создании форм, позволяет избежать внедрения SQL, а также предотвращает атаки подделки межсайтовых запросов (csrf-атаки). Сеансы хранятся на сервере, что не позволяет злоумышленникам возиться с файлами cookie браузера, а каждый пароль хранится в хешированном виде.

Некоторые недостатки web2py включают в себя:

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

Структура каталогов

project/
    README
    LICENSE
    VERSION                    > this web2py version
    web2py.py                  > the startup script
    anyserver.py               > to run with third party servers
    ...                        > other handlers and example files
    gluon/                     > the core libraries
        packages/              > web2py submodules
          dal/
        contrib/               > third party libraries
        tests/                 > unittests
    applications/              > are the apps
        admin/                 > web based IDE
            ...
        examples/              > examples, docs, links
            ...
        welcome/               > the scaffolding app (they all copy it)
            ABOUT
            LICENSE
            models/
            views/
            controllers/
            sessions/
            errors/
            cache/
            static/
            uploads/
            modules/
            cron/
            tests/
        ...                    > your own apps
    examples/                  > example config files, mv .. and customize
    extras/                    > other files which are required for building web2py
    scripts/                   > utility and installation scripts
    handlers/
        wsgihandler.py         > handler to connect to WSGI
        ...                    > handlers for Fast-CGI, SCGI, Gevent, etc
    site-packages/             > additional optional modules
    logs/                      > log files will go in there
    deposit/                   > a place where web2py stores apps temporarily

Flask

Flask — это микрофреймворк Python, основанный на Jinja2 и Werkzeug, и, как и другие фреймворки, он распространяется под лицензией BSD, лицензией на бесплатное программное обеспечение с некоторыми ограничениями. Сайты, использующие Flask, включают LinkedIn и Pinterest. Flask имеет следующие особенности:

  • Встроенная поддержка модульного тестирования
  • Шаблон с использованием Jinjia2
  • Обширная документация
  • Сеансы клиента используют безопасные файлы cookie
  • Сервер разработки и отладчик
  • Спокойный запрос
  • Совместимость с WSGI 1.0
  • на основе юникода
  • множество расширений

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

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

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

образец кода

from flask import Flask

app = Flask(__name__)

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

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

Колба Отличные ресурсы

Bottle

Как и flask, Bottle представляет собой сетевую среду Server Gateway Interface (WSGI). Как файл, он не зависит ни от какой библиотеки за пределами стандартной библиотеки Python. Когда Марсель Хеллкамп написал его в 2009 году, он начинался с минимального набора инструментов, включая шаблоны, маршрутизацию и уровень абстракции WSGI. Эта небольшая и мощная платформа отлично подходит для программистов, которые ищут гибкость и базовую функциональность, создают простые приложения и веб-сайты, а также создают веб-API.

К его преимуществам относятся:

  • Встроенный быстрый шаблонизатор и поддержка Jinja2, Mako и Cheetah.
  • Обширные инструменты для доступа к загрузкам, файлам cookie, данным форм, заголовкам и другим метаданным.
  • Встроенный сервер разработки HTTP с поддержкой fapws3, Google App Engine, CherryPyPaste.
  • Поддержка динамических URL-адресов

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

Образец кода:

from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)

Документация

многокадровый

Хотя в это трудно поверить, это всего лишь несколько из десятков фреймворков Python, доступных разработчикам. Python.org сообщает, что Django, TurboGears и web2py являются наиболее популярными полными вариантами. Чтобы обеспечить всесторонний взгляд на оптимизацию кадров, здесь мы добавляем два высокоуровневых морфологических микрофрейма. Другие фреймворки со страстными поклонниками включаютPyramid, web.py, Bobo, Albatross, иCherryPy.

Найдите подходящий вариант

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