Передача HTML-страницы в шаблон в Flask

#flask

#flask

Вопрос:

Допустим, у меня есть HTML-страница, содержащая небольшой HTML-код.Как я могу передать саму HTML-страницу в шаблон в flask? Я знаю, что мы можем передать некоторый html-контент в шаблон (мы можем использовать разметку (‘String here’). Но если у меня есть имя HTML-страницы, как я могу это сделать?

Комментарии:

1. Находится ли эта HTML-страница внутри /templates или в другом месте на диске, или где-то в Интернете?

2. На самом деле я создаю расширение flask, поэтому я хочу, чтобы пользователи использовали мой html-скрипт внутри своих. Итак, html-страница находится внутри папки templates.

Ответ №1:

Если вы хотите, чтобы пользователи использовали ваш скрипт, просто зарегистрируйте схему элементов в приложении при инициализации вашего расширения и попросите пользователей использовать include куда должен идти скрипт:

 {% include 'your-extension-name/your-script.html' %}
  

Это предполагает, что ваш проект имеет структуру папок, подобную этой:

 your_extension_name/
    __init__.py
    other
    files.here
    templates/
        your-extension-name/
            your-script.html
  

В качестве альтернативы, вы можете использовать подход, используемый Flask-DebugToolbar и обработкой запросов / ответов Flask с помощью monkey-patch, для автоматической вставки вашего HTML (но этот подход немного хрупкий и слишком длинный, чтобы размещать его здесь).

Комментарии:

1. И как я могу сослаться на мой файл css, который находится в статической папке? Это потому, что мой html-файл содержит ссылку на файл css в статической папке.

2. Также не могли бы вы, пожалуйста, дать несколько инструкций по «регистрации схемы элементов в приложении при инициализации вашего расширения»? Я читал о чертежах, но я все еще в замешательстве и не понимаю, как это сделать. Не могли бы вы, пожалуйста, помочь?

3. from flask import Blueprint а потом your_extension_bp = Blueprint("your_extension_name", __name__, static_folder="static", template_folder="templates") . Затем в вашем init_app вы просто вызываете register_blueprint app объект. Что касается статической ссылки в вашем шаблоне, просто используйте url_for("your_extension_name.static", filename="you/file/here.ext") , и все должно работать.

4. Спасибо! Это не может быть более ясным, чем это. Большое Вам спасибо!

5. Прошу прощения, но даже несмотря на то, что я пишу url_for(«your_extension_name.static», filename=»you/file/here.ext»), расширение ищет статический файл только в приложении пользователя. Он не ищет его в статической папке расширения….