#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»), расширение ищет статический файл только в приложении пользователя. Он не ищет его в статической папке расширения….