python - 将 dash_html_components 传递给 Jinja 模板

标签 python flask jinja2 plotly plotly-dash

我正在使用 Python 库 Dash 并且文档声称它不支持使用仪表板 html 代码编写原始 html 的能力。是否有一个已知的解决方法(比如将 dcc.Graph 传递到 render_template() 与 Flask?)。

我想迁移到 Jinja 模板文件的代码片段是:

app.layout = html.Div(className='ui container', children=[
    html.H1('Locations', className=''),
    html.Div(id='text-content'),
    dcc.Graph(id='map', figure={
        'data': [{
            'lat': df['LAT'],
            'lon': df['LONG'],
            'marker': {
                'color': df['YEAR'],
                'size': 8,
                'opacity': 0.6
            },
            'customdata': df['NO'],
            'type': 'scattermapbox'
        }],
            },
            'hovermode': 'closest',
            'margin': {'l': 0, 'r': 0, 'b': 0, 't': 0}
        }
    })
])

最佳答案

我以前来过这里并自己问过这个问题,我继续在这里回答:Plotly.offline plot output_type='div' not working inside HTML - How to embed Plotly to HTML
简而言之,要获得通过 Flask View 呈现的绘图图表,您可以执行以下操作(取自上述链接)

  • 创建图表
  • 调用 pyo.plot()正常通过无花果,output_type='div'include_plotlyjs=False
  • 将该输出传递给通过 Markup() 的变量(从 flask 进口)
  • Markup(variable)穿过render_template就像你喜欢一个表格
  • 使用 {{ jinja template }} 在 html 中呈现变量

  • 多一点实际演示:
    def my_bar_chart():
        *snip irrelevant*
        my_bar_chart = pyo.plot(fig, output_type='div', include_plotlyjs=False)
        return Markup(my_bar_chart)
    
    现在将您的函数导入到 app.py/ View 所在的任何位置,并像处理任何表单一样通过渲染模板传递它。
    下面是一个例子:
    def my_page():
        my_bar_chart_var = my_bar_chart()
        return render_template('my_page.html',
                                bar_chart_1=my_bar_chart_var)
    
    然后在该页面的 html 上简单地通过 bar_chart_1在像这样的 jinja 模板中:
    {{ bar_chart_1 }}
    

    关于python - 将 dash_html_components 传递给 Jinja 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50827099/

    相关文章:

    c++ - 关于在 boost.python 中将 Python 二进制文件转换为 C++ 二进制文件的错误

    python - mysql.connect() 在 with 语句中使用时返回不同的类型

    webserver - Flask内置Web服务器有哪些限制

    python - 如何在 Python/Ansible 中用模式 {{ '{{' }}/{{ '}}' }} 替换左大括号和右大括号 {{ }}

    python - CherryPy 无法正确处理 Jinja2 模板中的非 ASCII 字符

    javascript - Flask jinja2 不刷新页面更新div内容

    python - 关于 python 描述符的几个说明

    python - 使用 BeautifulSoup 从 HTML 表中抓取一列

    python - Flask 应用程序不使用另一个模块中定义的路由

    python - 计算两个模式之间的重复记录