В Flask URL-адрес по умолчанию для обслуживания статических файлов, таких как изображения, файлы CSS и файлы JavaScript, обычно имеет значение «/static». Однако могут быть случаи, когда вы захотите изменить этот URL-адрес по умолчанию на что-то более значимое, например «/media». В этой статье мы рассмотрим несколько методов достижения такой настройки, сопровождаемые примерами кода.
Метод 1: обновление префикса статического URL-адреса в конфигурации Flask:
- Откройте файл приложения Flask (обычно с именем
app.pyилиapplication.py). - Найдите строку, в которой вы создаете экземпляр приложения Flask, обычно используя
Flask(__name__). - Добавьте следующую строку под строкой создания приложения:
app.config['STATIC_URL_PATH'] = '/media'Этот код обновляет статический URL-адрес до «/media».
- Сохраните файл и перезапустите приложение Flask.
Метод 2: использование Blueprint для создания отдельной статической папки:
- Создайте новую папку в каталоге проекта Flask с именем «media». Эта папка будет содержать ваши статические файлы.
- В папке «media» создайте новый файл Python с именем
media.py. - В
media.pyимпортируйте необходимые модули:from flask import Blueprint, send_from_directory import os - Создайте экземпляр Blueprint:
media_bp = Blueprint('media', __name__, static_folder='media') - Определите маршрут для обслуживания статических файлов:
@media_bp.route('/media/<path:filename>') def media_files(filename): root_dir = os.path.abspath(os.path.dirname(__file__)) return send_from_directory(os.path.join(root_dir, 'media'), filename) - Зарегистрируйте Blueprint в основном файле приложения Flask:
app.register_blueprint(media_bp) - Сохраните файлы и перезапустите приложение Flask.
Метод 3: использование расширения Flask-Static-Compressed:
- Установите расширение Flask-Static-Compressed:
pip install Flask-Static-Compressed - В файл приложения Flask импортируйте необходимые модули:
from flask import Flask from flask_static_compressed import FlaskStaticCompressed - Создайте экземпляр приложения Flask и инициализируйте расширение Flask-Static-Compressed:
app = Flask(__name__) compressed_static = FlaskStaticCompressed(app, compress_static_url='/media') - Сохраните файл и перезапустите приложение Flask.