.. _tutorial-setup: Шаг 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__) :meth:`~flask.Config.from_object` будет смотреть на данный объект (если это строка, он импортирует её) и затем будет искать все определённые здесь переменные, названные заглаавными буквами. В нашем случае, конфигурация, которую мы только что записали, это несколько вышеприведённых строк кода. Вы также можете перенести их в отдельный файл. Обычно хорошей идеей является загрузка конфигурации из отдельного файла конфигурации. Это именно то, чем занимается метод :meth:`~flask.Config.from_envvar`, которым следует заменить вышеприведённю строчку :meth:`~flask.Config.from_object`:: app.config.from_envvar('FLASKR_SETTINGS', silent=True) Таким образом, кто-то может установить переменную окружения с именем :envvar:`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). Однако, мы сфокусируемся на этом чуть позже. Для начала мы должны добиться, чтобы заработала база данных. .. admonition:: Сервер, доступный из внешнего мира Хотите, чтобы ваш сервер был публично доступным? Для получения дополнительной информации обратитесь к разделу :ref:`externally visible server `. Продолжение: :ref:`tutorial-dbinit`.