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-components
和dash-core-components
的样式。dash-html-components
和dash-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.
)