【问题标题】:How to add a javascript and css file in Jinja2 using Databricks Python?如何使用 Databricks Python 在 Jinja2 中添加 javascript 和 css 文件?
【发布时间】:2020-02-27 17:46:51
【问题描述】:

我正在使用 Databricks Python 笔记本,并尝试在 Jinja2 中呈现 HTML 文件。我正在尝试添加 Javascript 和 CSS 文件。下面是我写的代码。

我没有使用烧瓶创建任何应用程序。这只是一个简单的模板

myTemplate = Template('''<html> <center><img src="data:image/jpeg;base64,{{ tpath }}" alt={{ name }} width="1200" height="90" /></center><br><h1> Hello world {{ something }}!</h1>
{% block javascript %}
    <script type="text/javascript">
        {% include "/mnt/sandbox/AWS-JDPS-MACHINE-HEALTH/Solution_PDF/myscript.js" %}
    </script>
    <!-- The contents of myscript.js will be loaded inside the script tag -->
{% endblock %}
{% block css %}
<link rel="stylesheet" type="text/css" href="/mnt/sandbox/AWS-JDPS-MACHINE-HEALTH/Solution_PDF/Embed.css" />
{% endblock %}

</html>
''')
test = myTemplate.render(something="MACHINE HEALTH", tpath = file, name = 'Sample')

它的抛出错误“没有指定此环境的加载器”。 由于我使用的是 Databricks 环境,而且我是 jinja2 和 Databricks 的新手。我无法改变环境的路径。

还有其他方法可以在我的模板中嵌入 CSS 和 javascript 文件吗?
当你渲染它时 - 我想要一个 HTML 文件

下面是完整的错误 -

    TypeError                                 Traceback (most recent call last)
<command-11791890> in <module>()
     12 </html>
     13 ''')
---> 14 test = myTemplate.render(something="MACHINE HEALTH", tpath = file, name = 'Tarun')

/databricks/python/lib/python3.5/site-packages/jinja2/environment.py in render(self, *args, **kwargs)
    987         except Exception:
    988             exc_info = sys.exc_info()
--> 989         return self.environment.handle_exception(exc_info, True)
    990 
    991     def stream(self, *args, **kwargs):

/databricks/python/lib/python3.5/site-packages/jinja2/environment.py in handle_exception(self, exc_info, rendered, source_hint)
    752             self.exception_handler(traceback)
    753         exc_type, exc_value, tb = traceback.standard_exc_info
--> 754         reraise(exc_type, exc_value, tb)
    755 
    756     def join_path(self, template, parent):

/databricks/python/lib/python3.5/site-packages/jinja2/_compat.py in reraise(tp, value, tb)
     35     def reraise(tp, value, tb=None):
     36         if value.__traceback__ is not tb:
---> 37             raise value.with_traceback(tb)
     38         raise value
     39 

<template> in top-level template code()

<template> in block "javascript"()

TypeError: no loader for this environment specified

【问题讨论】:

    标签: python jinja2 databricks


    【解决方案1】:

    这里有两件事:

    1. Ninja 对 Databricks 文件系统 (DBFS) 一无所知,它实际上是围绕特定云存储实现的包装器。这就是为什么它抱怨缺少装载机。要从使用本地文件的软件访问 DBFS 上的文件,您需要在路径前添加 /dbfs 前缀。例如:/dbfs/mnt/sandbox/
    2. 样式表也是如此 - 您不能使用href="/mnt/sandbox/...,因为该文件不可访问。这里的解决方案是将样式表作为文本包含到 HTML 中,因此 HTML 是自包含的。或将文件放入/FileStore location on DBFS(例如/FileStore/file_name.css)并引用它为/files/file_name.css(有关更多详细信息/示例,请参阅文档)

    【讨论】:

      猜你喜欢
      • 2020-03-09
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      相关资源
      最近更新 更多