Flask – это легковесный фреймворк для создания веб-приложений на языке Python. В этой статье мы рассмотрим работу с шаблонами и статическими файлами во Flask, что является важным аспектом при создании и настройке веб-приложений.
Шаблоны в Flask
Flask использует систему шаблонов Jinja2 для упрощения динамического создания HTML. Чтобы начать работу с шаблонами, нужно создать папку «templates» в корневом каталоге вашего приложения. Flask автоматически найдет и использует файлы из этой папки при вызове функции render_template().
Пример использования шаблона:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
В примере выше мы импортируем функцию render_template() и используем ее для отображения файла «index.html» из папки «templates».
Использование переменных и циклов в шаблонах
Jinja2 позволяет использовать переменные и циклы в шаблонах. Переменные передаются из обработчика в шаблон через render_template(). Пример использования переменной в шаблоне:
@app.route('/user/<username>')
def user(username):
return render_template('user.html', username=username)
В этом примере мы передаем переменную username из обработчика URL-адреса в шаблон «user.html». В шаблоне можно использовать эту переменную с помощью двойных фигурных скобок:
<!DOCTYPE html>
<html>
<head>
<title>Привет, {{ username }}</title>
</head>
<body>
<h1>Привет, {{ username }}!</h1>
</body>
</html>
Статические файлы в Flask
Статические файлы, такие как изображения, стилевые таблицы (CSS) и скрипты JavaScript, хранятся в папке «static» в корневом каталоге вашего приложения. Flask автоматически обрабатывает статические файлы, и вы можете ссылаться на них в шаблонах с помощью функции url_for().
Пример использования статических файлов:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
</head>
<body>
<h1>Привет, мир!</h1>
<img src="{{ url_for('static', filename='logo.png') }}" alt="Logo">
</body>
</html>
В этом примере мы используем функцию url_for() для подключения стилевой таблицы «styles.css» и отображения изображения «logo.png» из папки «static».
Наследование шаблонов
Jinja2 поддерживает наследование шаблонов, что позволяет повторно использовать общий код, такой как верхний и нижний колонтитулы, в разных шаблонах. Для этого создайте базовый шаблон с блоками, которые могут быть переопределены в дочерних шаблонах.
Пример базового шаблона:
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}Default Title{% endblock %}</title>
</head>
<body>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
Для создания дочернего шаблона, расширьте базовый шаблон и переопределите необходимые блоки:
{% extends 'base.html' %}
{% block title %}Дочерний шаблон{% endblock %}
{% block content %}
<h1>Это дочерний шаблон.</h1>
{% endblock %}
В данном примере мы расширяем базовый шаблон «base.html» и переопределяем блоки «title» и «content» для создания дочернего шаблона.
Заключение
Работа с шаблонами и статическими файлами во Flask является важным аспектом разработки веб-приложений. Использование системы шаблонов Jinja2 и правильное размещение статических файлов позволяет создавать масштабируемые и легко поддерживаемые приложения. Учитывайте эти основы при создании своих Flask-приложений, чтобы обеспечить гибкость и удобство разработки.