Пользовательский рендеринг StructBlock в Wagtail 2.2 - PullRequest
0 голосов
/ 06 сентября 2018

Я использую простой StructBlock со следующим кодом:

from wagtail.core import blocks

class ProfileById(blocks.StructBlock):

  ids = blocks.CharBlock(label='Profile by ID')

  class Meta:
    template = 'myapp/blocks/profile_by_id.html'
    icon = 'user'

Но когда этот компонент отображается на странице, он должен выполнить быстрый API-вызов к серверу, используя URL-адрес, такой как "https://api.server.ours/profiles/?ids=%ids&format=json".format(ids=ids), превратить этот json во что-то, что Python может пройти, а затем подключиться к этим данным в myapp/blocks/profile_by_id.html шаблон.

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

Я пытался найти что-то подобное в документах по трясогузке, но ничего не увидел, только то, что для расширений страниц вы можете переопределить serve() def, который представляет собой совершенно другое дерево иерархии.

1 Ответ

0 голосов
/ 06 сентября 2018

Классы блоков определяют метод get_context, который можно переопределить для вставки дополнительных переменных контекста в шаблон:

http://docs.wagtail.io/en/v2.2.2/topics/streamfield.html#template-rendering (найдите is_happening_today для соответствующего примера кода)

...