/ / Как да прикачите js / css към блок StreamField, когато той се визуализира? - трясък

Как да се прикрепи js / css към StreamField блок, когато той се изобразява? - стърчиопашка

Знам, че можете да включите javascript в форма чрез използване на django форми Media API и js_initializer() метод и аз го направих така успешно. Показва.

Има ли специфичен механизъм за това? Или просто трябва да включите js / css файловете в шаблона на страницата? Аз наистина бих искал да избегна включването им във всяка страница, която има StreamField биха могли, може имам този блок, тъй като по-голямата част е спечелил, и това означава много загубено време за зареждане на страницата.

Отговори:

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