Шаг 2: Код для настройки приложения

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

В flaskr.py:

# все импорты
import sqlite3
from flask import Flask, request, session, g, redirect, url_for, \
     abort, render_template, flash

# конфигурация
DATABASE = '/tmp/flaskr.db'
DEBUG = True
SECRET_KEY = 'development key'
USERNAME = 'admin'
PASSWORD = 'default'

Далее, мы должны создать наше текущее приложение и инициализировать его в помощью конфигурации из того же файла, т. е. flaskr.py:

# создаём наше маленькое приложение :)
app = Flask(__name__)
app.config.from_object(__name__)

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

Обычно хорошей идеей является загрузка конфигурации из отдельного файла конфигурации. Это именно то, чем занимается метод from_envvar(), которым следует заменить вышеприведённю строчку from_object():

app.config.from_envvar('FLASKR_SETTINGS', silent=True)

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

secret_key необходим для обеспечения безопасности сессий на клиентской стороне. Выбирайте этот ключ с умом, и настолько трудный для разгадывания и сложный, насколько это возможно. Флаг DEBUG включает или отключает интерактивный отладчик. Никогда не оставляйте режим отладки ативированным при реальном использовании системы, потому что это позолит пользоватлям исполнять код на сервере!

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

def connect_db():
    return sqlite3.connect(app.config['DATABASE'])

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

if __name__ == '__main__':
    app.run()

Отвлекаясь на минутку, приведём способ, которым достигается запуск приложения без каких-либо проблем - это делается с помощью следующих команд:

python flaskr.py

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

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

Сервер, доступный из внешнего мира

Хотите, чтобы ваш сервер был публично доступным? Для получения дополнительной информации обратитесь к разделу externally visible server.

Продолжение: Шаг 3: Создание базы данных.