Flask – это микрофреймворк, который не имеет инструментов или библиотек, характерных для других фреймворков. Тем не менее, в нем есть набор базовых возможностей. А если необходимо увеличить их перечень, всегда можно установить дополнения. Такой подход более гибкий и экономичный по сравнению с подключением огромного фреймворка с большим количеством компонентов.
В чистом виде Flask не умеет много чего: ни подключаться к базам данных, ни проверять данные формы, ни загружать файлы. Все это реализуется за счет расширений. Поэтому использовать будете только те функции, в которых действительно есть надобность.
А благодаря отсутствию строгих правил и возможности следовать собственной схеме, Flask не настолько жесткий в плане структурирования программы. Сегодня рассмотрим основные преимущества, недостатки, особенности и возможности этого фреймворка.
Код первого приложения:
from markupsafe import escape
from flask import Flask, abort
app = Flask(__name__)
@app.route('/')
@app.route('/index/')
def hello():
return '<h1>Hello, World!</h1>'
@app.route('/about/')
def about():
return '<h3>This is a Flask web application.</h3>'
@app.route('/capitalize/<word>/')
def capitalize(word):
return '<h1>{}</h1>'.format(escape(word.capitalize()))
@app.route('/add/<int:n1>/<int:n2>/')
def add(n1, n2):
return '<h1>{}</h1>'.format(n1 + n2)
@app.route('/users/<int:user_id>/')
def greet_user(user_id):
users = ['Bob', 'Jane', 'Adam']
try:
return '<h2>Hi {}</h2>'.format(users[user_id])
except IndexError:
abort(404)
Код использования шаблона:
import datetime
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello():
return render_template('index.html', utc_dt=datetime.datetime.utcnow())
@app.route('/about/')
def about():
return render_template('about.html')
@app.route('/comments/')
def comments():
comments = ['This is the first comment.',
'This is the second comment.',
'This is the third comment.',
'This is the fourth comment.'
]
return render_template('comments.html', comments=comments)