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)