Python 如何将图表与摇尾CMS一起使用

Python 如何将图表与摇尾CMS一起使用,python,django,charts,wagtail,wagtail-streamfield,Python,Django,Charts,Wagtail,Wagtail Streamfield,我需要将自定义图表包括到streamfield函数中,如您所见 但是用户如何能够从wagtail管理员修改数据呢?我完全不知道如何才能做到这一点 我正在考虑一个表单,但是否可以将表单添加到streamfield?我想是的,我可以通过现有表单的链接来完成。但这似乎很难做到,也不是一个好主意 你觉得怎么样? 你的最佳实践是什么 您是否有将Taucharts集成到CMS中的示例?您可以在blocks.py中创建一个自定义块,例如LineChartBlock(),它引用了一个名为line_chart.h

我需要将自定义图表包括到streamfield函数中,如您所见

但是用户如何能够从wagtail管理员修改数据呢?我完全不知道如何才能做到这一点

我正在考虑一个表单,但是否可以将表单添加到streamfield?我想是的,我可以通过现有表单的链接来完成。但这似乎很难做到,也不是一个好主意

你觉得怎么样? 你的最佳实践是什么


您是否有将Taucharts集成到CMS中的示例?

您可以在blocks.py中创建一个自定义块,例如LineChartBlock(),它引用了一个名为line_chart.html的模板。您需要将自定义块导入models.py文件,以将其添加到StreamField中。然后CMS管理员端的用户可以输入值并将其保存为参数。然后可以将其作为动态JavaScript变量传递到模板中,您可以使用它创建自定义图表。这里有一个非常粗略的想法

因此blocks.py将如下所示:

from wagtail.core import blocks

class LineChartBlock(blocks.StructBlock):
    title = blocks.CharBlock()
    x = blocks.DecimalBlock()
    y = blocks.DecimalBlock()
    data = JSONField()

    class Meta:
        template = 'blocks/line_chart.html'
您的models.py:

class BlogPage(Page):
    body = StreamField([
        ('paragraph', RichTextBlock()),
        ('line_chart', LineChartBlock()),
    ])
您的模板:

<script>
    const title = "{{ title }}";
    const x = "{{ x }}";
    const y = "{{ y }}";
    const data = "{{ data }}";

    makeChartWizardry = () => {
       doStuff;
    }

</script>

<section>
    <div id="chart"></div>
</section>

const title=“{title}}”;
常量x=“{x}}”;
常量y=“{y}}”;
const data=“{data}}”;
MakeChartWizard=()=>{
多斯塔夫;
}

我做的一个类似项目是Wagtail代码块。在其中,我使用一个HTML文本区域来保存代码,并创建一个“预览区域”,显示代码的突出显示。您可以做类似的事情,让它构建图表所需的JSON。看一看:您应该知道如何输入数据(文件字段、文本区域、固定输入字段集、动态输入字段集)。只有当你能在CMS中存储你的数据后,你才能想办法输出它。Tauchart接受json。