Dash FAQs#

参考:Part 6. FAQs | Dash for Python Documentation | Plotly

问:如何自定义 Dash 应用程序的外观? 答:Dash 应用程序在浏览器中呈现为符合现代标准的 Web 应用程序。这意味着您可以像使用标准 HTML 一样使用 CSS 来设置 Dash 应用的样式。

所有dash-html-components都通过style属性支持内联 CSS 样式。通过定位组件的 ID 或类名称,外部 CSS 样式表还可用于设置dash-html-componentsdash-core-components的样式。dash-html-componentsdash-core-components都接受属性className,该属性对应于 HTML 元素属性类。

Dash HTML Components 中的“Dash HTML组件”部分说明了如何为dash-html-components提供内联样式和 CSS 类名,您可以使用 CSS 样式表作为目标。Dash指南中的Adding CSS & JS and Overriding the Page-Load Template部分说明了如何将自己的样式表链接到 Dash 应用。


问:如何将 JavaScript 添加到 Dash 应用程序? 答:您可以将自己的脚本添加到 Dash 应用程序中,就像将 JavaScript 文件添加到 HTML 文档中一样。请参阅《Dash 指南》中的Adding CSS & JS and Overriding the Page-Load Template部分。


问:我可以制作包含多个页面的 Dash 应用程序吗? 答:是的!Dash 支持多页应用程序。请参阅《Dash用户指南》中的Multi-Page Apps and URL Support部分。


问:如何将 Dash 应用程序组织成多个文件? 答:可以在《Dash用户指南》的Multi-Page Apps and URL Support部分中找到执行此操作的策略。


问:如何确定哪个输入已更改? 答:请参阅Advanced Callbacks部分中的dash.callback_context


问:我可以将 Jinja2 模板与 Dash 一起使用吗?

答:Jinja2 模板在作为 HTML 页面发送到客户端之前,先在服务器上呈现(通常在 Flask 应用程序中)。另一方面,Dash 应用程序是使用 React 在客户端上呈现的。这使这些在浏览器中显示 HTML 的方法截然不同,这意味着这两种方法无法直接组合。但是,您可以将 Dash 应用程序与现有的 Flask 应用程序集成在一起,以便 Flask 应用程序可以处理某些 URL 端点,而 Dash 应用程序位于特定的 URL 端点。


问:我可以将 jQuery 与 Dash 一起使用吗?

答:在大多数情况下,您不能这样做。Dash 使用 React 在客户端浏览器上呈现您的应用程序。React 与 jQuery的根本不同之处在于,它利用虚拟 DOM(文档对象模型)来管理页面呈现。由于 jQuery 不会讲 React 的虚拟DOM,因此您无法使用 jQuery 的任何 DOM 操作工具来更改页面布局,这经常就是为什么要使用 jQuery 的原因。但是,您可以使用 jQuery 功能中不接触 DOM 的部分,例如注册事件侦听器以使击键导致页面重定向。

通常,如果您希望在应用程序中添加自定义客户端行为,我们建议将该行为封装在自定义 Dash 组件中。


问:那些很棒的撤消和重做按钮去哪了?

答:好的,主要是我们遇到了相反的问题:How do I get rid of the undo/redo buttons。尽管从技术角度来看此功能很简洁,但大多数人在实践中并不认为它有价值。从 Dash 1.0 开始,默认情况下会删除按钮,不需要任何怪异的 CSS 技巧。如果您想让他们回来,请使用 show_undo_redo

app = Dash(show_undo_redo=True)

问:我还有其他问题!我在哪里可以问他们? 答:Dash 社区论坛上挤满了讨论 Dash 主题,互相帮助的人以及共享Dash创作的人。跳过并加入讨论。

dash.exceptions.DependencyException: Error loading dependency. “plotly” is not a registered library.#

app = Dash(
    __name__,
    eager_loading=True, # 修复 dash.exceptions.DependencyException: Error loading dependency. "plotly" is not a registered library.
)