email邮件中 内嵌iframe_网站搭建8:Django项目中嵌入Jupyter notebook

news/2024/5/19 11:25:34/文章来源:https://blog.csdn.net/weixin_36310976/article/details/113069871

96709aba04416bc383ee50df85e44f68.png

最近感兴趣研究了一下量化交易,在聚宽(JoinQuant)网站中看到网页中嵌入了Jupyter notebook(多语言支持的Html笔记本应用程序)。而我也经常使用Jupyter测试神经网络等机器学习算法,如果可以把Jupyter架设在自己的网站上,那样随时随地可以用手机跑程序了。下面就研究一下如何在Django中嵌入Jupyter notebook。

50f894b7cce1a5ddfb6240c9b9dcbd3e.png

使用nbviewer分享Jupter notebook

借助nbviewer实现Jupyter notebook文件分享比较简单,不需要自己架设Jupyter notebook Server,适合分享在静态页面中,但问题是不能动态编写、运行程序,只能显示.ipynb文件当前状态。适合分享排版后的Jupyter笔记,本身就不要动态运行也不想被修改的场景。

  • 将编写好的.ipynb文件上传到云端,如果你有自己的云存储比如阿里云OSS就直接上传,并且记录文件网址。如果没有自己的云存储,可以传到Github上,获取上传.ipynb文件的网址。
  • 登陆https://nbviewer.jupyter.org/,然后输入相应的ipynb文件链接,即可在线显示,并获取显示jupyter notebook界面的网址。

e0139e01bb13b905a442b4c7a1916324.png
  • 通过iframe将jupyter notebook显示界面嵌入到网页中。对于Django来说,嵌入方式与静态网页基本相同,但要注意生成链接和视图函数。 (1)需要首先创建对应html框架并插入iframe标签和网页按键;
<iframe frameborder='no'  scrolling="yes" 
style="width:100%;overflow:auto;height:100%;min-height:630px"  
src="https://nbviewer.jupyter.org/urls/smartzlink.oss-cn-zhangjiakou.aliyuncs.com/01.ipynb" ></iframe>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">    <ul class="nav navbar-nav navbar-right">...<li class="cl-effect-11"><a href="{% url 'blog:jupyter' %}" 
data-hover="Jupyter">Jupyter</a></li>       </ul>
</div><!-- /.navbar-collapse -->

(2) 在views.py文件中创建视图函数;

def jupyter(request):  return render(request, 'blog/jupyter.html', context={})

(3)在blog/urls.py文件中增加对应链接。

urlpatterns = [   
...
url(r'^jupyter$', views.jupyter, name='jupyter'),    
]

本章节的代码位于:smartzlink_step4

Django嵌入自建的Jupyter notebook Server

同样采用iframe嵌入Jupyter,但是嵌入的是自建Jupyter notebook server是自建在服务器的,这样就可以在页面上进行编码、调试和运行代码,可以达到与聚宽网站类似效果。

  • 安装Jupyter notebook
pip3 install ipython  jupyter notebook
  • 生成默认配置文件 运行下面命令,在用户主目录下生成.jupyter文件夹,并且生成jupyter_notebook_config.py配置文件。
jupyter notebook --generate-config
  • 生成登陆密钥 运行下面命令,会在.jupyter文件夹下生成jupyter_notebook_config.josn文件,里面包含密码sha值。
jupyter notebook password
  • 修改配置文件,实现远程登陆
c.NotebookApp.ip = '0.0.0.0' #允许所有外部IP访问
c.NotebookApp.password = u'sha1:...' #插入生成密码sha值 #运行时不打开本地浏览器
c.NotebookApp.open_browser = False #运行时不打开本地浏览器
c.NotebookApp.port = 8888 #服务端口
c.NotebookApp.allow_root = True #允许在root用户下打开程序

完成上述设置之后,就可以通过服务器直接进入jupyter notebook server。

50dcf83dabb7ca7c7d35f7993b67ab8d.png

1e20747153de18d36ee0444edb56cd67.png

下载已经可以远程访问jupyter notebook,但是现在还不能直接在页面中通过iframe调用jupyter notebook,因为默 jupyter noteboo 的HTTP Content-Security-Policy (CSP) 安全策略是不允许父类将jupyter notebook页面嵌入到 frame、iframe、object、embed 或 applet中的,所以需要进一步设置jupyter notebook。

(1) 需要修改jupyter notebook配置使其允许指定IP的父类元素内嵌jupyter notebook页面。

c.NotebookApp.tornado_settings =
{ 'headers':{ 'Content-Security-Policy': "frame-ancestors http://47.92.37.254:8000 http://localhost:8000 'self' "}
}

(2) 嵌入后不希望离开打开Jupyter notebook的页面,增加文件 ~/.jupyter/custom/custom.js,设置在本页打开新建页面。

define(['base/js/namespace'], function(Jupyter){Jupyter._target = '_self';});

(3) 修改html页面中iframe标签

<iframe frameborder='no'  scrolling="no" 
style="width:100%;overflow:auto;height:100%;min-height:630px"  
src="http://47.92.37.254:8888" ></iframe>

(4) 通过supervisor设置notebook上电自动启动,然后就可以在网站页面中加载Jupyter notebook server。

[program:smartzlink_jupyter]
command = jupyter notebook
directory=/home/monte3card/notebooks
autostart=true
autorestart=unexpected
user=root
stdout_logfile=/home/monte3card/etc/supervisor/var/log/smartzlink_juputer_stdout.log
stderr_logfile=/home/monte3card/etc/supervisor/var/log/smartzlink_jupyter_stderr.log

e76a9a4c7a320f44c6732978a95c6d69.png

网站状态-SmartzLink

本章节的代码位于:smartzlink_step5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_781619.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吐血推荐-巧用网站配置文件提升权限!!!

巧用网站配置文件提升权限本文已被***手册杂志2007年第三期收录朋友给我发来一个Asp的Webshell的地址&#xff0c;然后又给我发了一条消息“痛苦&#xff0c;拿到Webshell&#xff0c;由于权限太低&#xff0c;什么也干不了&#xff01;&#xff08;图1&#xff09;”&#xff…

程序员常用的技术网站

&#xff08;http://stackoverflow.com/&#xff09;这个网站我几乎可以不用介绍了&#xff0c;就算你们不常用&#xff0c;就算每次你都用搜索引擎去找编程相关问题都有很大可能跳入此网站。此网站用途&#xff1a;当你碰到任何编程问题&#xff0c;就去搜索该问题&#xff0c…

php的bom头会影响格式,完美解决由bom头引发的非法字符#65279;出现php网站模板或功能问题...

今天为一个客户解决网页模板问题发现一个有意思的问题&#xff0c;客户还是对代码有些小懂&#xff0c;自己尝试着改了一下&#xff0c;结果发现头部多出来一个空行&#xff0c;找到我以后&#xff0c;随即f12查看了一下&#xff0c;一看乐了&#xff0c;出现了个&#xfeff;字…

SeleniumPhantomJS获取网站中的JS返回的数据

一、安装Selenium模块 pip install selenium Selenium 是一套完整的Web应用程序测试系统&#xff0c;包含了测试的录制、编写及运行和测试的并行处理。二、安装PhantomJS(官网下载&#xff1a;http://phantomjs.org/&#xff09; 下载后放在python安装目录&#xff0c;和…

一步一步SharePoint 2007之十六:注册并配置一个网站用户

在前面的文章中&#xff0c;我已经介绍了如何创建管理帐户。创建其它帐户的方法是一样的。大家可以把这个注册系统放到自己的网站中&#xff0c;就可以成为网站的一部分了。本文将只讲解如何在管理工具中将用户手动加入到网站用户组中&#xff0c;至于如何将注册完后的用户自动…

破解网站验证码

概述 很多开发者都讨厌网站的验证码&#xff0c;特别是写网络爬虫的程序员&#xff0c;而网站之所以设置验证码&#xff0c;是为了防止机器人访问网站&#xff0c;造成不必要的损失。现在好了&#xff0c;随着机器学习技术的发展&#xff0c;机器识别验证码的问题比较好解决了。…

最热开源静态网站生成器 TOP 20

1、静态站点生成器 Jekyll Jekyll 是一个简单的免费的Blog生成工具&#xff0c;类似WordPress。但是和WordPress又有很大的不同&#xff0c;原因是jekyll只是一个生成静态网页的工具&#xff0c;不需要数据库支持。但是可以配合第三方服务,例如discuz。最关键的是jekyll可以免费…

配件查询网站用java,基于jsp的配件管理系统-JavaEE实现配件管理系统 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的配件管理系统, 该项目可用各类java课程设计大作业中, 配件管理系统的系统架构分为前后台两部分, 最终实现在线上进行配件管理系统各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类配件管理系统相关的实体…

linux查看当前服务器是什么文件系统,linux文件系统中每个文件用什么来标识_网站服务器运行维护,linux...

linux如何查看tomcat进程_网站服务器运行维护linux查看tomcat进程的方法&#xff1a;首先进入linux系统&#xff1b;然后启动tomcat&#xff1b;接着执行命令“ps aux | grep tomcat”和“ps -ef | grep tomcat”即可查看正在运行的tomcat进程。linux文件系统中每个文件用什么来…

微软MSN Virtual Earth网站

MSN Virtual Earth网站已可以登录&#xff0c;有视频演示和图片&#xff0c;发布据说在今年夏天。http://www.virtualearth.com/视频演示&#xff1a;http://www.virtualearth.com/msnvirtualearth.asx下面是最新报道&#xff1a;在美国旧金山举行的互联网及地理信息服务会议“…

网站运营之比较和差异化

网站运营之比较和差异化人类内心有很多情绪&#xff0c;其中一种最基本的情绪是嫉妒。人类社会的幸福不在于你拥有什么&#xff0c;而在于比较。这个比较可能是负面的&#xff0c;也可能是正面的。比如说&#xff0c;良好的竞争&#xff0c;这是一种正向的比较&#xff0c;能够…

SEO专题之四:如何合理有效选定关键字

上一篇我们讲到了SEO与网站开发的中的注意事项,这篇文章继续结合上一篇内容继续讲解,如何合理有效的选定关键字.我们都知道.搜索引擎的工作是按你在文本框内输入的关键字来查找内容相匹配的网页.如果查找到则在搜索列表中显示出来,那么是不是你只要指定了相应的关键字浏览者就一…

谈谈大型网站的负载均衡器、db proxy和db

本文主要分析网站后台架构中的负载均衡器&#xff0c;企业常用的硬件负载均衡器软件负载均衡器、数据库代理服务器和数据库。 1.1 负载均衡 在大型网站部署中&#xff0c;负载均衡至少有三层部署。第一层为web server或者缓存代理之上的负载均衡&#xff0c;第二层为数据库之上…

批量抓取title keywords descrip【seo工具】

前两天帮朋友写个小工具。思路很简单实现也不是太难。写了这么个小工具。 实现功能&#xff1a;通过搜索引擎自动换页抓取记录页面中的属性值。贴代码&#xff1a; usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Draw…

用四八拔千斤之术解决网站百度沙盒

今天&#xff0c;实名网络营销师盼发表了一篇文章《百度收录保持在1&#xff0c;度娘都难以解决的问题》&#xff0c;他的博客都上线都半个多月了&#xff0c;博客的内容一直在持续更新&#xff0c;反链也逐渐增多&#xff0c;但是百度只收录首页&#xff0c;内页都没有收录&am…

python爬虫(上)--请求——关于旅游网站的酒店评论爬取(传参方法)

前言 最近考试一直都没有时间写这篇总结&#xff0c;现在考试暂告一段落&#xff0c;现在抽空出来写一篇总结&#xff0c;总结一下python爬虫的学习进度。 承接上一篇基于scrapy框架爬虫学习小结&#xff0c;上一篇主要是第二次作业后&#xff0c;“老师说会给我们时间继续完…

(Experience)模拟登陆网站 之 C#版

1、点击“获取cookie BAIDUID”&#xff1a; 2、然后接着点击“获取token值”&#xff1a; 3、接着再去填上你的百度的用户名和密码&#xff0c;然后再点击“模拟登陆百度首页”&#xff0c;如果用户名和密码都是正确的话&#xff0c;即可成功登陆&#xff1a; 当然&#…

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

原文地址为&#xff1a; VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程开篇语&#xff1a;最近在弄ocx控件发布到asp.net网站上使用&#xff0c;就是用户在使用过程中&#xff0c;自动下载安装ocx控件。&#xff08;此文章也是总结了网上好多人写的文章&#xff…

通过ABB-RobotApps网站下载资源

ABB-RobotApps网站上提供了很多RobotStudio上非常有用的插件与一些做好的用于仿真的库文件可以供我们免费下载。这些插件可以扩展我们RobotStudio的功能&#xff0c;库文件可以大大简化我们仿真的工作量。这些东西通过RobotStudio的Add-Ins选项卡中的RobotApps页面也可以访问&a…

手把手教你使用阿里云搭建个人网站(上云良心品,细致到想哭)

时间过得真快&#xff0c;备案快要通过下来了&#xff0c;自己也马上要成为一个真正的站长了&#xff0c;今天就来说一下我如何使用”云平台方案调研/技术选型”、”云上建站/开发过程”、”架构解析/优化”、”上云前后对比”、”遇到的问题及解决方案”经历吧。 ‘为了无法计…