Изменение URL-адреса по умолчанию на статический носитель в Flask: объяснение нескольких методов

В Flask URL-адрес по умолчанию для обслуживания статических файлов, таких как изображения, файлы CSS и файлы JavaScript, обычно имеет значение «/static». Однако могут быть случаи, когда вы захотите изменить этот URL-адрес по умолчанию на что-то более значимое, например «/media». В этой статье мы рассмотрим несколько методов достижения такой настройки, сопровождаемые примерами кода.

Метод 1: обновление префикса статического URL-адреса в конфигурации Flask:

  1. Откройте файл приложения Flask (обычно с именем app.pyили application.py).
  2. Найдите строку, в которой вы создаете экземпляр приложения Flask, обычно используя Flask(__name__).
  3. Добавьте следующую строку под строкой создания приложения:
    app.config['STATIC_URL_PATH'] = '/media'

    Этот код обновляет статический URL-адрес до «/media».

  4. Сохраните файл и перезапустите приложение Flask.

Метод 2: использование Blueprint для создания отдельной статической папки:

  1. Создайте новую папку в каталоге проекта Flask с именем «media». Эта папка будет содержать ваши статические файлы.
  2. В папке «media» создайте новый файл Python с именем media.py.
  3. В media.pyимпортируйте необходимые модули:
    from flask import Blueprint, send_from_directory
    import os
  4. Создайте экземпляр Blueprint:
    media_bp = Blueprint('media', __name__, static_folder='media')
  5. Определите маршрут для обслуживания статических файлов:
    @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)
  6. Зарегистрируйте Blueprint в основном файле приложения Flask:
    app.register_blueprint(media_bp)
  7. Сохраните файлы и перезапустите приложение Flask.

Метод 3: использование расширения Flask-Static-Compressed:

  1. Установите расширение Flask-Static-Compressed:
    pip install Flask-Static-Compressed
  2. В файл приложения Flask импортируйте необходимые модули:
    from flask import Flask
    from flask_static_compressed import FlaskStaticCompressed
  3. Создайте экземпляр приложения Flask и инициализируйте расширение Flask-Static-Compressed:
    app = Flask(__name__)
    compressed_static = FlaskStaticCompressed(app, compress_static_url='/media')
  4. Сохраните файл и перезапустите приложение Flask.