Framework для python Flask - Базовая конфигурация

Framework для python Flask - Базовая конфигурация
На чтение
22 мин.
Просмотров
9
Дата обновления
09.03.2025
Старт:22.10.2024
Срок обучения:21 месяц
Fullstack-разработчик на Python
Профессия «Fullstack-разработчик на Python» от Нетологии: вы научитесь создавать сайты и веб-приложения с использованием Python и JavaScript. Курс включает много практики — 42 проекта, хакатоны и реальные задачи от партнёра ГК Самолет, что позволит вам развить ключевые навыки для успешной карьеры.
178 020 ₽296 700 ₽
4 945₽/мес рассрочка
Подробнее

Для быстрого старта с Flask, начните с создания виртуального окружения. Запустите команду python3 -m venv .venv в вашей директории проекта. Затем активируйте созданное окружение (на macOS/Linux: source .venv/bin/activate, на Windows: .venv\Scripts\activate).

Установите Flask, используя pip install Flask внутри активированного окружения. Это обеспечит необходимый функционал для вашего приложения.

Создайте файл app.py. В нём, импортируйте Flask из вашей библиотеки: from flask import Flask. Создайте экземпляр Flask: app = Flask(__name__). Задайте базовый маршрут, например, @app.route('/'). В функции, которая обрабатывает запрос, напишите return 'Добро пожаловать на мою веб-страницу!'.

Теперь запустите ваше приложение. Используйте if __name__ == '__main__': app.run(debug=True). Это запустит приложение в отладочном режиме. Вы можете теперь открыть ваш веб-браузер и перейти по адресу http://127.0.0.1:5000/.

Ключевой момент: Добавляйте обработку ошибок в ваши функции (например, try...except), чтобы ваше приложение было устойчивым.

Framework для Python Flask - Базовая конфигурация

Для базовой конфигурации проекта Flask создайте файл app.py.

Пример:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Главная страница Flask!"
if __name__ == "__main__":
app.run(debug=True)

Объяснение:

  • from flask import Flask: Импортирует необходимую библиотеку.
  • app = Flask(__name__): Создаёт экземпляр приложения Flask.
  • @app.route("/"): Определяет маршрут ("/") для запроса.
  • def index():: Функция, которая обрабатывает запросы по маршруту.
  • return "Главная страница Flask!": Возвращает строку клиенту.
  • if __name__ == "__main__":: Запуск приложения в режиме разработки (debug=True).

Дополнительные рекомендации:

  • Укажите переменную __name__. Это важно для корректного запуска.
  • Для производства, отключите debug=True. Используйте app.run(host='0.0.0.0', port=5000) для доступа к приложению извне.
  • Организуйте импорт других необходимых модулей в начале файла.
  • Создайте отдельные файлы для моделей, контроллеров и других важных компонентов.

Установка и настройка virtualenv

Для изоляции зависимостей Flask проекта используйте virtualenv.

1. Установка:

Откройте терминал и выполните команду:

pip install virtualenv

2. Создание окружения:

Создайте директорию для вашего проекта (например, myproject). Внутри неё создайте виртуальное окружение:

virtualenv .venv

Замените .venv на желаемое имя вашей виртуальной среды.

3. Активация:

После создания, активируйте виртуальное окружение. Команды активации могут отличаться в зависимости от операционной системы:

  • macOS и Linux:
  • source .venv/bin/activate
  • Windows:
  • .venv\Scripts\activate

После активации, название вашей командной строки изменится, указывая на активное окружение (например, (.venv): ~/myproject/).

4. Установка зависимостей Flask:

Внутри активированного окружения установите Flask и другие необходимые пакеты:

pip install Flask
pip install Flask-WTF

Замените Flask-WTF на необходимые пакеты.

Важно: Все последующие установки пакетов должны выполняться только внутри активированного виртуального окружения.

5. Деактивация:

Для деактивации виртуального окружения, выполните:

deactivate

Установка Flask

Для начала установите Flask с помощью pip:

  • Откройте терминал или командную строку.
  • Введите команду: pip install Flask

После успешной установки, проверьте, что Flask установлен правильно:

  • Введите в командной строке: python
  • Введите в интерпретаторе Python: import Flask

Если не возникнет ошибок, Flask установлен успешно. Если произошла ошибка, проверьте подключение к интернету и повторите установку.

Дополнительные инструменты и библиотеки для Flask вы можете устанавливать аналогично, через pip install.

Настройка базового приложения Flask

Создайте файл app.py и поместите туда следующий код:


from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello, World!"
if __name__ == "__main__":
app.run(debug=True)

Разъяснение кода:

  • from flask import Flask - импортирует необходимый класс.
  • app = Flask(__name__) - создает экземпляр приложения Flask. __name__ необходим, чтобы приложение знало, где искать свои статические файлы.
  • @app.route("/") - декоратор, определяющий, что функция hello_world() будет вызываться при запросе на корневой URL.
  • def hello_world(): - собственно функция, которая возвращает строку "Hello, World!". Можно её изменить на любое другое значение.
  • if __name__ == "__main__": - важная часть, запускающая Flask только при непосредственном выполнении файла.
  • app.run(debug=True) - запускает приложение в отладочном режиме. debug=True крайне важно для отладки.

После сохранения файла:

  • Откройте терминал или командную строку.
  • Перейдите в директорию, где вы сохранили app.py.
  • Запустите команду python app.py.

Теперь, если вы откроете в браузере адрес http://127.0.0.1:5000/, вы увидите "Hello, World!".

Дополнительные рекомендации:

  • Используйте app.run(host='0.0.0.0') для запуска вашего приложения, доступного из сети.
  • Меняйте @app.route("/") на другие маршруты (@app.route("/") и так далее), чтобы определять поведение для разных URL.

Конфигурация маршрутов (endpoints)

Для настройки маршрутов в Flask используйте декоратор @app.route.

Синтаксис Описание
@app.route('/путь') Определяет маршрут, соответствующий адресу /путь. Функция, помеченная этим декоратором, будет вызываться при обращении к указанному пути.
@app.route('/путь/<параметр>') Указывает параметризованный маршрут. Если пользователь обращается к /путь/значение, значение будет доступно в функции как <параметр>.
@app.route('/путь', methods=['POST']) Определяет маршрут и разрешает использование метода POST.

Пример:


from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
return "Главная страница"
@app.route('/hello/')
def hello(name):
return f"Привет, {name}!"
@app.route('/post', methods=['POST'])
def post_data():
data = request.get_json()
return "Данные получены"

В этом примере:

  • @app.route('/') отвечает на запрос на главную страницу.
  • @app.route('/hello/') обрабатывает запрос с параметром имени и возвращает приветствие.
  • @app.route('/post', methods=['POST']) обрабатывает POST-запросы на /post, ожидая JSON-формат в теле запроса.

Обратите внимание на вариативность методов (GET, POST, PUT, DELETE), которые используются в маршрутах.

Использование шаблонов Jinja2

Для отображения динамического контента в Flask используйте шаблоны Jinja2. Они позволяют добавлять переменные и данные из приложения в HTML-код.

Создание шаблона: Создайте файлы с расширением .html (например, index.html). В них запишите структуру HTML, оставляя места для подстановки значений с помощью фигурных скобок.

  • Пример index.html:
    
    
    
    Привет, {{ name }}!
    Ваше число: {{ number }}
    Список:
    
    • {{ item1 }}
    • {{ item2 }}

Передача данных в шаблон: В коде приложения передавайте данные в функцию render_template:

  • Пример приложения:
    
    from flask import Flask, render_template
    app = Flask(__name__)
    @app.route("/")
    def index():
    name = "Мир"
    number = 42
    items = ["Яблоко", "Груша"]
    return render_template('index.html', name=name, number=number, item1=items[0], item2=items[1])
    if __name__ == "__main__":
    app.run(debug=True)
    

Вложенные циклы: Вы можете использовать циклы для обработки списков:

  • Пример index.html с циклом:
    
    
      • <% for item in my_list %>
      • {{item}}
      • <% endfor %>

Фильтры: Jinja2 предоставляет фильтры для форматирования данных (например, для преобразования в верхний регистр).

  • Используйте { variable}.

Обработка запросов GET и POST

Для обработки запросов GET и POST в Flask используется декоратор @app.route с указанием метода запроса. Например:

from flask import Flask, request app = Flask(__name__) @app.route('/example', methods=['GET']) def example_get(): data = request.args.get('param1') return f"Вы получили данные: {data}" @app.route('/data', methods=['POST']) def example_post(): data = request.form.get('param2') return f"Вы отправили данные: {data}" if __name__ == '__main__': app.run(debug=True)

В первом примере, /example обрабатывает запросы GET. Метод request.args.get('param1') получает значение параметра param1 из строки запроса. Во втором случае, /data обрабатывает запросы POST, используя request.form.get('param2') для получения данных из тела запроса.

Важно различать request.args (GET) и request.form (POST). Если вы используете POST, вы должны указать, что это POST запрос.

Обе функции возвращают строку. В реальных приложениях, вы, вероятно, будете использовать jsonify() для ответа в формате JSON. Также обратите внимание, что debug = True необходимо только при отладке.

Вопрос-ответ:

Нужно ли устанавливать какие-то дополнительные пакеты для работы с Flask?

Для базовой работы с Flask, обычно, не требуется установка дополнительных пакетов. Пакет Flask устанавливается стандартными средствами, например, с помощью pip. Если вы планируете использовать более сложные функции, такие как работа с базами данных или отправка электронных сообщений, вам, скорее всего, потребуются дополнительные инструменты (например, SQLAlchemy для работы с базами данных). Но для простого веб-приложения – нет.

Какие основные принципы безопасности нужно учитывать при создании базового Flask-приложения?

Важная составляющая безопасности Flask – отслеживание пользовательского ввода. Нельзя доверять всей информации, получаемой от пользователя, и необходимо использовать методы экранирования или проверки данных, предотвращая SQL-инъекции и XSS-атаки. Не храните чувствительную информацию (пароли, ключи) в коде непосредственно. Используйте конфигурационные файлы или переменные окружения. Обращайте внимание на обработку ошибок и возвращайте понятные сообщения пользователю без раскрытия подробностей о внутреннем состоянии.

#INNER#
0 Комментариев
Комментариев на модерации: 0
Оставьте комментарий