Микрообзор веб-фреймворков
Донец Владимир
twitter.com/vovk_donets
vk.com/vovk.donets
Python & web
e-commerce SAAS
kwimba.ru
2
Что будет дальше
➢ Немного истории
➢ Типичная архитектура веб-фреймворка
➢ Наиболее популярные фреймворки
➢ Немного сравнений между собой
3
Всё сказанное далее отражает моё линое
мнение – обсуждение приветствуется!
Отмазка
4
● 1996 г. – Grail
● 1998 г. – Zope
… Webware, Quixote, Twisted
● Django, Pyramid, web.py,
web2py
● Flask, Bottle
● Статические фреймворки
Назад в прошлое
5
Структура + набор модулей
Фреймворк
6
» Роутинг URL
» ORM
» Работа с формами
» Шаблонные движки
» Защита от распространённых атак
» Печеньки и сессии
» ...дополните список по-своему усмотрению
Типичные компоненты
7
» Качество документации
» Техническая реализация
» Объем «фарша» из коробки
» Качество поддержки фреймворка
» Популярность: количество и активность пользователей
В чём различия?
8
Популярные фреймворки
Django
Pyramid
Flask
Bottle
web.py
web2py
9
>>> pip install django
>>> django-admin startproject bakaproject
>>> cd bakaproject; python manage.py startapp bakapp
>>> делаем базовые настройки в settings.py
>>> Создаём view, urls.py ...
>>> manage.py runserver
o__O
Hello world, Django
10
def hello_world(request):
return Response('<h1>Hello World!</h1>')
if __name__ == '__main__':
config = Configurator()
config.add_route('hello', '/')
config.add_view(hello_world, route_name='hello')
app = config.make_wsgi_app()
server = make_server('0.0.0.0', 6543, app)
Hello world, Pyramid
11
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
Hello world, Flask
12
from bottle import route
from bottle import run, template
@route('/hello/<name>')
def index(name):
txt = '<b>Hello {{name}}</b>!'
return template(txt, name=name)
run(host='localhost', port=8080)
Hello world, Bottle
13
from weppy import App
app = App(__name__)
@app.route("/")
def hello():
return "Hello world!"
if __name__ == "__main__":
app.run()
Hello world, Weppy
14
» Качество документации
» Техническая реализация
» Объем «фарша» из коробки
» Качество поддержки фреймворка
» Популярность: количество и активность пользователей
Дьявол кроется в деталях
15
Документация
Django Pyramid Flask Bottle Weppy web2py web.py
0
2
4
6
8
10
12
Документация
16
Django Pyramid Flask Bottle Weppy web2py web.py
0
2
4
6
8
10
12
9,8
7,5
10
8,2
5,8
7
8,2
Stars
Форков
Разработчиков
Оценим по гитхабу
17
Скорость: сериализация JSON
18
Скорость: ORM + шаблон
19
Ссылки
● http://weppy.org/docs/0.6
● http://klen.github.io/py-frameworks-bench/
● http://docs.pylonsproject.org/
● http://wsgi.tutorial.codepoint.net/
● http://turbogears.readthedocs.io/
● webpy.org
● http://bottlepy.org/
● http://archimedeanco.com/wsgi-tutorial/
● http://djangoproject.com/

Зоопарк python веб-фреймворков