/ / Як приєднати js / css до блоку StreamField, коли він візуалізується? - трясогузка

Як прикріпити js / css до блоку StreamField при його відтворенні? - ваттайл

Я знаю, що ви можете включити JavaScript в форма за допомогою django форм Media API і js_initializer() Метод, і я зробив це успішно. відображається.

Чи існує певний механізм для цього? Або мені просто потрібно включити файли js / css у шаблон сторінки? Мені б дуже хотілося уникнути включення їх у кожну сторінку, на якій є StreamField може є цей блок, оскільки переважна більшість перемогла "t", а це означає багато витраченого часу завантаження сторінки.

Відповіді:

3 для відповіді № 1

Це обговорювалося раніше https://github.com/wagtail/wagtail/issues/2490 - Я не спробував, але, на мою думку, ви могли б реалізувати це, визначивши a frontend_media властивість відповідних класових блоків, що повертає a django.forms.Media об'єкт, поряд з функцією (метод на сторінці моделі, ймовірно, добре підходить ...), який збирає ці визначення медіа в один об'єкт:

from django.forms import Media

class MyPage(Page):
body = StreamField(...)

def body_media(self):
media = Media()
for block_val in self.body:
if hasattr(block_val.block, "frontend_media"):
media += block_val.block.frontend_media
return media