Как отправить параметры в HTML-файл, который я обслуживаю, через приложение Klein(Flask)?

Я использую Klein для разработки конечных точек REST. (аналог Python Flask) Меня интересует, как я могу передать параметры в файл HTML, который я хочу обслуживать, если это вообще возможно.

from twisted.web.static import File
from klein import Klein
app = Klein()

@app.route('/', branch=True)
def pg_index(request):
    return File('./')

app.run("localhost", 8080)

1 ответ

Используйте язык шаблонов, такой как дзиндзя или хамелеон. Вы можете вернуть словарь и взаимодействовать со словарем в шаблоне.

Документы Кляйна описывают, как использовать Twisted шаблоны.

Шаблоны

Вы также можете легко использовать twisted.web.templates, возвращая все, что реализует twisted.web.template.IRenderable, например twisted.web.template.Element, и в этом случае шаблон будет отображен, а результат будет отправлен как ответ тело.

from twisted.web.template import Element, XMLString, renderer
from klein import run, route

class HelloElement(Element):
    loader = XMLString((
        '<h1 '
        'xmlns:t="http://twistedmatrix.com/ns/twisted.web.template/0.1"'
        '>Hello, <span t:render="name"></span>!</h1>'))

    def __init__(self, name):
        self._name = name

    @renderer
    def name(self, request, tag):
        return self._name

@route('/hello/<string:name>')
def home(request, name='world'):
    return HelloElement(name)

run("localhost", 8080)

и это, которое показывает вам именно то, что вы просите. Цитирую первые несколько абзацев:

HTML-шаблонирование - это процесс преобразования шаблонного документа (который описывает стиль и структуру, но сам по себе не содержит никакого содержимого) в некоторый HTML-вывод, который включает информацию об объектах в вашем приложении. Для этого в Python существует множество библиотек: несколько имен, шаблоны jinja2, django и clearsilver . Вы можете легко использовать любую из этих библиотек в своем Twisted Web-приложении, либо запустив их как приложения WSGI, либо вызвав API предпочитаемой системы шаблонов для вывода их в виде строк, а затем записав эти строки в Request.write .

Прежде чем мы начнем объяснять, как его использовать, я хотел бы подчеркнуть, что вам не нужно использовать систему шаблонов Twisted, если вы предпочитаете какой-то другой способ генерации HTML. Используйте его, если это соответствует вашему личному стилю или вашему приложению, но не стесняйтесь использовать другие вещи. В Twisted есть шаблоны для собственного использования, поскольку серверу twisted.web необходимо создавать HTML в разных местах, и мы не хотели добавлять еще одну большую зависимость для этого. Twisted ни в коем случае не несовместим с другими системами, так что это никак не связано с тем, что мы используем свои собственные.

Посмотрите этот пример для использования шаблонов Jinja2 с Klein.

Другие вопросы по тегам