python-2.7 - 在 Flask 中渲染 Jupyter Notebook Iframe

标签 python-2.7 flask jinja2 jupyter-notebook flask-wtforms

我正在使用 Flask 为单个用户托管 UI。我一直在尝试做的事情是设置一种方法,让用户单击一个按钮,使用标记语言在文档中预先指定的位置插入一些文本和图像。我最初使用 Jinja2 来实现此目的,但问题是用户需要能够在插入数据后修改文档,以防他们需要对文本进行小的更改或添加一行等......据我所知可以'不需要使用 flask 渲染的模板来完成。

我知道可以使用 iframe 将 Jupyter Notebook(基于标记语言)引入 UI,但我还没有成功做到这一点。

我尝试过的:

  1. 将我的 Jupyter 笔记本配置为公开
  2. 使用我的公共(public) Jupyter 地址放置 Iframe <iframe width="400" height="400" src="http://10.33.75.112:8888/notebooks/Desktop/Tool/test.ipynb"/> 进入我的 HTML 模板文件...这会显示一个我无法与之交互的空白 Iframe
  3. 尝试了 NBviewer 和 NBconvert,看看是否有某种方法可以将其集成,但没有取得任何成功。

想法?

最佳答案

我找到了解决方案。

在 Jupyter-notebook-config.py 文件夹中,您需要取消注释和修改几个选项才能实现此目的。

c.NotebookApp.allow_origin = '*' #Basic permission
c.NotebookApp.disable_check_xsrf = True #Otherwise Jupyter restricts you modifying the Iframed Notebook
c.NotebookApp.ip = 'ENTER_YOUR_JUPYTER_IP_ADDRESS' #Appears in the top browser bar when you launch jupyter
c.NotebookApp.port = 8888 #Your choice of port
c.NotebookApp.token = '' #In my case I didn't want to deal with security
c.NotebookApp.trust_xheaders = True #May or may not make a difference to you

c.NotebookApp.tornado_settings = {
'headers': {
'Content-Security-Policy': "frame-ancestors 'http://127.0.0.1:5000/' 'self' "
}
} #assuming your Flask localhost is 127.0.0.1:5000

然后在 HTML 中:

<iframe width="1000" height="1000"  src="http://ENTER_YOUR_JUPYTER_IP_ADDRESS:8888/notebooks/Desktop/test.ipynb"/>

编辑:Google Chrome 浏览器在显示此类 iframe 时也会出错,因此请使用 Mozilla 或 IE。

关于python-2.7 - 在 Flask 中渲染 Jupyter Notebook Iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44008765/

相关文章:

python - 获取需要很长时间才能运行的目录中的最新文件

python - 如何在 Flask 中实现基于角色的访问控制?

Ansible 按属性过滤包含一个值

ansible - 在jinja2循环中使用hostvars的动态变量

javascript - Flask:为什么定义变量时ajax数据的内容会改变?

python - 将 jinja2 block 渲染为 json

macos - 无法在 Mac 上卸载 Numpy

python while循环不退出

python - 我们可以在 pytest 的 setup_module() 或 setup_class 中打印命令行参数吗?

python-3.x - 使用 flask 路由(Python)启动和停止方法