非常奇怪的问题,render成单独的html文件可以正常显示,插入到django项目中却不行,于是捣鼓出了一个解决办法,没有找到原因,猜测是jscode的相关问题。
view.py相关代码
...
chart = (Bar()
.add_xaxis(sub_er)
.add_yaxis("", submit_day,color='purple')
.set_global_opts(title_opts=opts.TitleOpts(title="提交时间"))
tab=Tab()
tab.add(chart=chart,tab_name='chart1')
tab.render_embed()
return render(request, 'data_chart.html', locals())
data.html
<body>
{{ tab|safe }}
<body>
没有报错但是页面为空白,同时使用tab.render()查看渲染的出单独html显示正常,于是将相关的html代码复制进template中的data_chart.html,发现有效,于是将渲染得到的html进行文本处理后safe过滤器显示到页面上。
本段脚本需要手动复制进data_chart.html的头部,其余复制body标签内的内容即可
<script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script>
需要的如下图
改进后代码:
from bs4 import BeautifulSoup
tab=Tab()
tab.add(chart=chart,tab_name='chart1')
# tab.render_embed()
filepath=tab.render('tmp1.html') #html地址,可以设置到临时文件夹定期清理
with open(filepath,encoding='utf=8') as file:
html=file.read()
soup = BeautifulSoup(html,from_encoding='utf-8')
body=str(soup.find('body'))
os.remove(filepath) #删除临时的html文件
ps:django+pyechart的快速入手
https://pyecharts.org/#/zh-cn/web_django?id=django-%e6%a8%a1%e6%9d%bf%e6%b8%b2%e6%9f%93
边用边学ing