如何在使用 django 构建的主页上显示 jupyter notebook?

Posted

技术标签:

【中文标题】如何在使用 django 构建的主页上显示 jupyter notebook?【英文标题】:How can I display an jupyter notebook on a homepage built with django? 【发布时间】:2018-01-21 01:21:57 【问题描述】:

环境:

Python 3.6 Django 1.11

我将.ipynb 文件保存为.html,因为我想实现此html 以将其显示在我的主页上(尚未上线)。

我在我的主页上使用 Bootstrap 4.0 beta 作为样式。我有一个导航栏,它被继承到这个项目的任何 html 文件中,它工作得非常好。

但是jupyter notebook的html文件只有在我不继承navbar的情况下才能正确显示。如果我尝试继承,导航栏将不再正确显示。

我的计划是建立自己的博客,在其中发布 markdown 文件(当我不包含 Python 或 R 代码时)或 jupyter notebook 或 rmarkdown notebook。

RMarkdown 或 Jupyter Notebooks 都可以转换为 html、markdown 或 pdf。但是尝试了前2个,它不起作用。如您所知,如果在浏览器中打开,它们会完美显示。但是我当然想保持我已经实现的导航。

所以我希望你能给我一个提示,我该怎么做;我还是个初学者,尤其是 Django。但是我尝试了很多东西:

    我首先准备好主页并使用 Django 应用程序 zinnia。我可以发布带有可用结果的 RMarkdown,但不能发布 Jupyter 笔记本(因为同样的问题)。 我尝试转换为 Markdown 并在 Zinnia 中使用它,但结果更糟。 试图操作笔记本的 html 文件,但这并没有改变任何东西。 尝试在终端用nbconvert手动转换(我认为这是相同的转换方法,因为没有区别) 从头开始构建一个新页面(这次使用 bootstrap 4,而首先我使用 3)。但同样的问题仍然存在。

唯一可行的方法是省略导航栏或省略样式。但显然其他人已经找到了完美的解决方案,因为网上有很多页面都很好地实现了 jupyter notebook。

我有一个 base.html,其中创建了导航栏并加载了引导样式。所有其他 html 文件都继承自该文件,如下所示:

% extends 'base.html' %
% block content %

(here is the individual html content or the html code of the jupyter notebook)

% endblock %

编辑: 我刚刚发现这个:https://nipunbatra.github.io/blog/2017/Jupyter-powered-blog.html

看起来这个人在遇到同样的问题时找到了解决方法,但我无法理解所有内容。

如果您对我有任何提示,请告诉我。对于所有遇到相同问题的人,也许您可​​以使用该博客文章中的信息解决问题。

【问题讨论】:

【参考方案1】:

虽然我没有完美的解决方案,但我认为这只是有人花一些时间清理前端外观的问题。我不擅长js 等,但在后端我做了一些事情。

nbconvertbasic 模板一起使用,如您的博客中所述 在 Django 中使用 FileField 模型上传此内容 为这些创建一个视图;可能是列表和详细视图

剩下的将是:

创建一个模板,获取基本的 html 文件并使用样式表将其修饰为您喜欢的样子

正如我所说,我已经完成了前三个步骤,但输出很难看。您也可以尝试使用ipypublish 进行HTML 转换。 Jupyter 有一个博客对我来说很有趣,但我找不到任何关于他们如何或是否使用笔记本来制作它的文档......

【讨论】:

以上是关于如何在使用 django 构建的主页上显示 jupyter notebook?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中构建模型?

如何使用 django 将数据表值显示到主页中

如何在 Django 模板中设置背景图像?

如何在 Django 模板中显示分页?

Django:无法让主页正确显示 TemplateDoesNotExist at /

Django如何将外键传递给ModelForm字段