我知道您可以使用 django forms Media API 和方法在表单js_initializer()中包含 javascript ,并且我已经成功完成了。但是,当显示我编写的这个自定义块的实例时,我需要在页面中包含 javascript 和 CSS 文件。
有具体的机制吗?或者我只需要在页面模板中包含 js/css 文件?我真的很想避免将它们包含在每个具有可能具有此块的 StreamField 的页面上,因为绝大多数不会,这意味着浪费大量页面加载时间。
这之前曾在https://github.com/wagtail/wagtail/issues/2490讨论过- 我还没有尝试过,但我相信您可以通过在返回django.formsfrontend_media的相关块类上定义一个属性来实现这一点.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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
880 次 |
| 最近记录: |