如何用人工智能帮你读论文?

之前,我在《论文读不懂怎么办?》一文中,给你介绍了论文阅读遇到问题时的几个解决方法。尤其是介绍了你可以求助的免费资源和路径,它们包括但不限于:

  • 幻灯
  • 博客
  • 视频
  • 课程
  • 代码

那篇文章,在知乎上获得了 2600 个赞(截止 2022 年 10 月)。我相信,对于很多同学,起到了帮助。

只不过,环境和技术在变化,我们解决问题的方法和思路,也应该与时俱进。

这不,因为有了大规模自然语言处理模型的加持,阅读论文时遇到不认识的名词,或者无法理解作者的简单解释时,我们有了一种新的对策。

具体的方法,就是人工智能替你阅读后,把内容综合整理,结合上下文转换成简单清晰的语言,再反馈给你。

这个想法,其实并不新鲜了。翻看近几年自然语言处理领域的论文,你能看见不少相关的研究。

只不过,那些研究成果只存在论文中,或者是在某个实验室的电脑里面,普通人根本无法接触,更不要说利用了。

这回可不一样,有人( \@amanjha__ and \@functionofjade)居然真的就做了个产品出来。

这个应用的名字,叫做 explainpaper ,非常直白吧?

使用起来也特别方便。不用去菜单里面点选找寻。只要你把论文传上去,高亮某一个词语、短语或者段落,人工智能就会自动为你解读。

不仅如此,你还可以就着 AI 反馈的结果,继续追问。

这种应用演示不大适合图文。所以我干脆为你做了 一段演示视频,你可以先看看。

看完之后,感受如何?

反正不少小伙伴表示,很兴奋。

这东西背后的技术是啥?当然还是咱们的老熟人 ------GPT-3.

其实 GPT-3 这模型的特点,说穿了就是。因为模型庞大,参数众多,所以从海量语料库里积攒的「认知」就多。注意我这里刻意回避了「知识」这个词儿。

(资料来源:t.ly/cY1kn)

从上图中,你不难看到,现在的文本和代码生成中,GPT-3 都占据了重要位置。

我喜欢共享内容的原因之一,是视频发出后总可以获得观众进一步的反馈。不少的问题,都会激发我的思考。

例如有小伙伴在视频后面提问,说这个东西能不能帮着理解中文论文啊?

这是个很好的问题。毕竟很多国内人文社科研究生平时阅读的论文,更大比例是中文的。

我一开始觉得这个问题问得有些太贪心了。对于一个外国人做的刚上线应用,你指望人家立即支持阅读中文,还能看懂中文的研究论文,不大现实吧?

刚要回复,我突然想起来 上次在 Lex 上面的教训了。既然 explainpaper 的底层模型是 GPT-3 ,那它本来就该认得中文啊。

为了确保回答准确,还是实际测试一下吧。我传了一篇自己的论文上去。

中文划线高亮之后,AI 反馈的结果让我有些吃惊。

尽管 explainpaper 并不能直接用中文来解释信息。但它可以立即识别出「知识管理」就是 knowledge management ,然后进一步解释下去。

下面这段解释,就更有意思了。

它先广泛解释「插件」是啥,然后结合本文的上下文,指出 Roam Toolkit 是一种插件,并且描述了它的功能。

不仅如此,从下图可以看出,就连划线的时候字符之间出现了空格间隔,也依然能正常识别和解释。

下面,我故意找了个文中没有进行详细解释的「概念网络」,结果是这样的。

我能确定,这解释里面出现的「宠物」、「猫」、「狗」啥的,肯定没在本文正文出现过。

Evernote 这一段,让我愣住了。

Explainpaper 居然是准确识别了这张表格,并且把内容总结梳理,然后用英文输出了出来。

上述的演示,是不是回答了读者的问题呢?我觉得算不上。从需求分析来看,人家看中文论文遇到术语不清楚,自然是需要中文的解释。你再弄成英文给我,这......

可换个角度想想,这东西帮助外国人阅读中文论文,可是再好不过了。遇到中文专业词汇,随时可以获得准确的英文解释,而且阐述还贴合论文的上下文。外国人读中文论文,将减少很多障碍。这或许可以快速提升中文论文的影响力,妙啊!

另外,目前 explainpaper 缺乏中文解释能力,也给国内的开发者提供了发展空间。希望早日看到更多 AI 实际应用上线,帮助国人理解中文论文。

我期待你能自己尝试一下这款在线应用。至少在目前,它是免费的。而且因为上传的都是公开发表的论文,也不存在用户隐私泄漏问题。所以可以放心大胆地尝试 ------ 特别是对于最近要写文献综述的小伙伴来说。

欢迎你把自己测试的结果和经验心得,分享在留言区。咱们一起交流讨论。

延伸阅读

  • 【知识星球精选】刻意练习区的辅助线
  • VOSviewer 中文视频教程
  • 如何高效学 Python?
  • 互联网上的时光机器
  • 如何高效入门 Logseq ?
本文转载于网络 如有侵权请联系删除

相关文章

  • TDesign 更新周报(2022年9月第1周)

    组件库Vue2forWeb发布 0.46.4? FeaturesPopup:新增 delay 属性用于控制延时显示或隐藏浮层,修复子Popup销毁时父级意外关闭的问题 @ikeq (#1436)Table: @chaishi (#1454)树形结构,新增 getTreeExpandedRow,用于获取展开的树形节点可编辑单元格,edit.rules 新增数据类型 function,用于动态设置校验规则,tdesign-vue-next#1472DaterPicker:区间日期选择时,联动开始/结束时间面板月份选择,防止出现两个面板均在同一月份的情况(issue#1469) @simpleAndElegant (#1470)TimePicker:支持带快捷标签 @chiyu1996 (#1407)官网:在线主题器支持全局圆角配置 @uyarn (#1459)? BugFixesSelect:修复creatable模式下的filter能力 @skytt (#1427)修复过滤掉数据后上下键仍可以选择过滤外的数据的问题 @sechi747 (#1434)Button:区分 loading 和

  • Docker 安装FastDFS

    什么是FastDFS?FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。FastDFS架构包括 Trackerserver 和 Storageserver。客户端请求Trackerserver进行文件上传、下载,通过Trackerserver调度最终由Storageserver完成文件上传和下载。Trackerserver 作用是负载均衡和调度,通过Trackerserver在文件上传时可以根据一些策略找到Storageserver提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。 Storageserver 作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storageserver没有实现自己的文件系统而是利用操作系统的文件系统来管理文件。可以将storage称为存储服务器 服务端两个角色:Tracker:管理集群,tracker也可以实现集群。每个tracke

  • Excel中的VBA编程「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。目的:有时我们需要对Excel文件中大量的数据进行整理,此时如果使用手动整理会非常繁琐而且容易出错。而如果采用VBA语言,在Excel中根据需求编写一段简单的代码就能自动完成大量数据的整理工作。1、以Excel2007为例,如果要进行VBA编程,需要启用“开发工具”选项。在Excel选项对话框中勾选【在功能区显示“开发工具“选项卡】复选框。在开发工具选项中点击“查看代码”,打开MicrosoftVisualBasic界面。2、在MicrosoftVisualBasic界面中点击“插入–>模块”菜单,添加一个“模块1”。并在该模块中添加一个名为Test的函数,如下所示:在Sub和EndSub间添加函数体,并保存。注意一定要将Excel文件保存为启用宏的工作薄(*.xlsm)格式。3、然后点击开发工具选项中的宏按钮,打开如下对话框选择Test,并点击执行。就能运行你所编写的Test函数。基本语法:1、给当前工作表的A1单元赋值10ActiveSheet.Range("A1").Value=10 或Range("A1

  • 最新版的pycharm对于Django框架里面的models相关的提示都消失了

    这个问题是好几天前出现的了,今天才有时(xin)间(qing)出来总结一下,一开始我百度说是pycharm没有识别出这事一个Django项目,但是好像不是这样的,即使我设置之后,与models相关的代码提示依旧没有出现。我开始怀疑是环境问题,因为自上次用pycharm写Django之后,安装了一些与数据处理相关的环境,然后我将此删除之后,并重新新建虚拟环境去新建Django项目,发现问题尚未解决,于是我考虑到可能是pycharm的版本问题,中间更新了好几次,但因为比赛原因也没有去写Django,于是我在官网上下载了2020.1版本,这也是我上一次使用的正常的版本,然后问题解决了。于是我去jetbrans官网提交了问题,在12月31日晚十一点的时候得到了回复果然我不是一个人,已经有相同问题的人。https://youtrack.jetbrains.com/issue/PY-45879好吧,好像问题还没得到解决,那就先用旧版本的吧,不得不说,pycharm要是没了这个功能,写代码效率真的降低了好多,12月30日几乎一整天都在想办法解决这个问题

  • 用bash脚本创建screen并向其发送命令

    什么是screen?GNUScreen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNUScreen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。为什么要用脚本创建screen?为了利用服务器的多个cpu,我们经常需要同时创建多个screen,如果screen的个数非常多,手动创建会非常麻烦。如何用bash脚本创建screen并向其发送命令?如果我们直接在脚本里写screen-Smy_screen,会导致脚本无法继续执行。为了使脚本执行下去,创建screen的具体代码如下:screen_name=$"my_screen"screen-dmS$screen_name复制现在,我们就已经创建了一个名为my_screen的窗口。然后,我们需要向其发送具体的命令。我们用如下命令:cmd=$"javaTest";screen-x-S$screen_name-p0-Xstuff"$cmd"screen-x-S$scree

  • Linux下安装Memcached服务器和客户端与PHP使用示例

    本文实例讲述了Linux下安装Memcached服务器和客户端与php使用。分享给大家供大家参考,具体如下:Memcached是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度和可扩展性。系统环境:CentOS7.264位Apache2.4.33安装libevent依赖库wgethttps://github.com/downloads/libevent/libevent/libevent-2.0.15-stable.tar.gz tar-zxvflibevent-2.0.15-stable.tar.gz cdlibevent-2.0.15-stable ./configure--prefix=/usr/local make sudomakeinstall复制安装Memcached服务器wgethttp://memcached.googlecode.com/files/memcached-1.4.9.tar.gz tar-zxvfmemcached-1.4.9.tar.gz cdmemcached-1.4.9 ./configure--

  • Pytest的内置fixture(七)

    在Pytest的测试框架中,也是内置了fixture的功能,这些内置的fixture在特定的测试场景下能够提高测试的效率,另外一个好处是它是内置的fixture,就不需要单独再写fixture了。就像Python语言中内置的函数一样,直接拿来调用实现想要实现的功能就可以了。下面具体来看这些内置的fixture它的含义以及在测试场景下的案例应用。一、tmpdir内置的fixture负责在测试开始前创建文件,和测试结束后删除临时文件。这样的测试场景也是比较常见的,比如测试过程中需要存放一个临时数据,那么既然是存放临时数据就需要临时目录,测试结束后临时文件也删除。就以一个登录的token为案例来演示它的应用,熟悉接口测试的同学都知道,token是登录成功后服务端返回给客户端随机的一个密钥,那么客户端下次请求服务端的时候,给服务端的token与服务端返回给客户端的一致,如果不一致,客户端就会返回到登录的页面,要起登录,见如下的案例测试代码:importpytest deflogin(username,password): ifusername=='wuya'andpass

  • LeetCode - 重复 N 次的元素

    LeetCode第961题,难度简单。原题地址:https://leetcode-cn.com/problems/n-repeated-element-in-size-2n-array/题目描述:在大小为2N的数组A中有N+1个不同的元素,其中有一个元素重复了N次。返回重复了N次的那个元素。示例1:输入:[1,2,3,3]输出:3示例2:输入:[2,1,2,5,3,2]输出:2示例3:输入:[5,1,5,2,5,3,5,4]输出:5提示:4<=A.length<=100000<=A[i]<10000A.length为偶数来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/n-repeated-element-in-size-2n-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思路:决定采用bitmap的方式,根据题意,直接设置了一个大小为10000的数组,然后遍历每一个元素,给bitmap中对应位置的元素设置一个计数器,每次都加1。如果bitmap中,当前元素所对应的的下标中的

  • 基于深度学习的车牌识别系统【YOLO+MLP】

    车牌识别系统可以自动检测并识别图像中的车辆牌照,其算法主要包括牌照定位、牌照分割、字符识别等步骤。本文将给出一种基于深度学习的车牌识别系统方案。要快速掌握开发人工智能系统的技能,推荐汇智网的机器学习系列在线课程 由于可以自动地从视频图像中提取车辆牌照信息,因此车牌识别系统可以应用于以下行业:公共安全:用于检测被盗抢车辆,将车牌与盗抢车辆数据库记录比对即可发现。停车管理:停车场入口自动放行、出口自动计费。道路安全:与雷达测试配合使用,识别超速车辆并记录违章我们的项目包含以下三个步骤:车辆牌照检测、牌照字符分割、牌照字符识别。1、车辆牌照检测我们使用Yolo(YouOnlyLookOne)算法来检测车辆牌照。Yolo是一个基于卷积神经网络的深度学习目标检测架构。该架构由JosephRedmon,AliFarhadi,RossGirshick和SantoshDivvala引入,2015年推出第一个版本,然后逐渐升级至版本3:Yolov1;论文Yolov2:论文Yolov3;论文Yolo是一个端到端训练的单一网络,可以用来预测目标的类别与边界框。Yolo网络速度极快,可以每秒45帧的速度实时处

  • 中美破冰!NASA主动要求在嫦娥四号上搭载美方信标机

    我国探月工程四期和深空探测工程已全面拉开序幕。策划&撰写:伶轩时隔8年,美国又再次与中国展开太空项目合作了。据ABC新闻报道,中国航天局副局长吴艳华称,“NASA(美国国家航空航天局)愿意分享其有关月球轨道卫星的信息,并希望能够监测嫦娥四号飞船的降落数据。”为此,中美两国就嫦娥四号交换了数据。而这也是自2011年,美国通过法律禁止中国参与联合太空项目之后,双方首次合作。中国还分享了嫦娥四号定时着陆的时间和坐标,虽然NASA没有精确抓到降落那一刻,但也在之后拍摄到了降落地点的照片。目前,NASA尚未就此次合作的发表任何声明,而美国国会是否事先批准了此次合作也不得而知。8年“破冰”路可能大多数人都知道,由于工程巨大,大多大型太空项目是由全球多个国家联合完成的,国际空间站就是其中之一。但在2011年,联邦调查局人员拦下一名曾在NASA工作,即将回国的中国公民,并声称他可能携带藏有机密的电子设备。即便事后证实该中国公民没有携带机密,美方依旧有很多人认为其是“中国间谍”,其中以共和党众议员FrankWolf最为积极。图|FrankWolf当时,FrankWolf对外宣称,“该名中国公民从

  • Python之Pandas中Series、DataFrame实践

    Python之Pandas中Series、DataFrame实践1.pandas的数据结构Series1.1Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。 1.2Series的字符串表现形式为:索引在左边,值在右边。复制2.pandas的数据结构DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值的)。dataframe中的数据是以一个或者多个二位块存放的(而不是列表、字典或者别的一维数据结构)。复制3.索引对象pandas的索引对象负责管理轴标签和其他元素(比如轴名称等)。构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index。 Index对象是不可修改的。复制4.pandas的主要Index对象Index最泛化的Index对象,将轴标签表示为一个由Python对象组成的NumPy数组 Int64Index针对整数的特殊Index MultiIndex“层次化”索引对象,表示单个轴上的多层索引。可以看做由元数组组成

  • iOS Runtime 简单介绍,以及不同类的 Method Swizzling

    #Runtime介绍:runtime顾名思义就是运行时,其实我们的App从你按下command+R开始一直到App运行起来经历了大致两个阶段,1:编译时,2:运行时。还记得一道很经典的面试题 这里给大家解释下:首先,*testObject是告诉编译器,testObject是一个指向某个Objective-C对象的指针。因为不管指向的是什么类型的对象, 一个指针所占的内存空间都是固定的,所以这里声明成任何类型的对象,最终生成的可执行代码都是没有区别的。这里限定了NSString只不过是告诉编译器,请把testObject当做一个NSString来检查,如果后面调用了非NSString的方法,会产生警告。接着,你创建了一个NSData对象,然后把这个对象所在的内存地址保存在testObject里。那么运行时(从这段代码执行开始,到程序结束),testObject指向的内存空间就是一个NSData对象。你可以把testObject当做一个NSData对象来用。所以编译时是NSString,运行时是NSData。 runtime是什么: 在runtime中,所有的类在OC中都会被定义成一个结

  • [Nodejs] -bash: npm: command not found

    今天安装nodejs按照文章http://my.oschina.net/blogshi/blog/260953 一步一步的来,发现npm命令无法使用。 查nodejs目录发现: -rwxr-xr-x2rootroot20231104Mar2322:08node lrwxrwxrwx2rootroot38Mar3102:40npm->../lib/node_modules/npm/bin/npm-cli.js 复制  npm指向另一个地址。   于是重新创建软连。 先删除原来的软连。   ln-s/root/node-v0.12.1-linux-x64/lib/node_modules/npm/bin/npm-cli.js/usr/local/bin/npm复制   OK了。

  • [转]mysql日志详细解析

    转自:http://pangge.blog.51cto.com/6013757/1319304 MySQL日志: 主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志; 日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mysql数据库的客户端连接状况、SQL语句的执行情况和错误信息等。当数据库遭到意外的损坏时,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复。 错误日志 在mysql数据库中,错误日志功能是默认开启的。并且,错误日志无法被禁止。默认情况下,错误日志存储在mysql数据库的数据文件中。错误日志文件通常的名称为hostname.err。其中,hostname表示服务器主机名。 错误日志信息可以自己进行配置的,错误日志所记录的信息是可以通过log-error和log-warnings来定义的,其中log-err是定义是否启用错误日志的功能和错误日志的存储位置,log-warnings是定义是否将警告信息也定义至错误日志中。默认情况下错误日志大概记录以下几个方面的信息:服务器启动和关闭过程中的信

  • Java并发(JUC常用类)

    JUC常用类 锁:   如ReentrantLock,ReadWriteLock。ReentrantLock可重入锁,可以替代synchronized使用,并且有更多 强大的功能,比如说可以中断锁,trylocak,超时等待,公平锁等。   ReadWriteLock,读写锁,更是对读和写进行了锁分离,在度读多写少的场景下,能极大的提高程序的性能。 原子类:   基本类,数组类,引用类等。AtomicInteger比较常用。使用原子类,可以不需要手动加锁,实现线程安全   原子变量,由CAS实现,也就是比较并交换,只有当当前值和修改之间记录的值一样时,才会修改,它比的是地址。CAS是原子操作的一种,由cpu指令执行   CAS有3个操作数,内存值,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改成B,否则什么都不做。CAS通过调用JNI(JavaNativeInterface)的代码实现的,JNI为Java本地调用,允许Java调用其他语言。而compareAndSwapInt就是借助C来调用CPU底层指令实现的。 线程同步:   使得线程间的同步更加容易

  • Unity3d Mecanim动画系统Animator学习笔记

    1.unity3dMecanim学习      Unity3d新版动画系统网上的介绍很多,但多是流水笔记,外人很难看明白,后来我终于找到介绍的比较明白的两个作者,特别感谢。一个是58开发网的乐天老师,课程视频网址:http://www.58kaifa.com/course/24,这是一个免费的视频课程,讲解的很仔细,很清除。另一个是博客园的阿诚de窝,文章地址:http://www.cnblogs.com/hammerc/category/647246.html,各个控制面板上的参数含义基本上都介绍了,非常详尽,再次像两位表示感谢。Orz!   2.Unity3dMecanim补充     a.Animator中的Trigger类型参数   Animator中有四种参数,Float,Int,Bool,Trigger,前三种很好理解,在这里只说一下Trigger类型的参数,这个参数本质上是一个bool,但是他不需要你手动设置false状态,比如有两个动画,Idle与Run,这个过渡条件你选择了Trigger类型变量start

  • hdu 4336 Card Collector

    有n种卡片,概率分别为p1...pn,p1+...+pn<=1 每个袋子最多一张卡片,也可以没有 这题巧妙的用到了整数的二进制 1#include<iostream> 2#include<string> 3#include<cstdio> 4#include<vector> 5#include<queue> 6#include<stack> 7#include<algorithm> 8#include<cstring> 9#include<stdlib.h> 10usingnamespacestd; 11#definepbpush_back 12doubledp[1<<21],p[22]; 13intmain(){ 14intn; 15while(cin>>n){ 16for(inti=0;i<n;i++) 17scanf("%lf",&p[i]); 18dp[(1<<n)-1]=0; 19for(inti=(1<&

  • 147

    Description 春节刚刚过,大家都是怎么过的呢?对江鸟而言,当然每天都是在打麻将中度过,他特别喜欢所谓的“通挂”,什么147,258,369。只要是遇到上述牌,他就会很高兴。现在他提出一个问题:如果只利用数字1,4,7组成一些数,那么你能很快求出第K(1<=K<=10000)大数吗?如前几个数将会是:1、4、7、11、14、、、 Input 输入一个如上所描述的整数K,(1<=K<=10000),多组输入。 Output 输出需要的第K大数。 SampleInput 1 3 4 复制 SampleOutput 1 7 11复制 #include<stdio.h>chara[3]={'1','4','7'};voidmain(){ inti,n; while(scanf("%d",&n)!=EOF) { if(n<=3){printf("%c\n",a[n-1]);continue;} intb[100],t=0; n--; while(n/3) { b[t++]=n%3; n=n/3-1; } b[

  • Android开发技术周报 Issue#4

    文章 Android系统性能调优工具介绍 在软件开发过程中,想必很多读者都遇到过系统性能问题。而解决系统性能问题的几个主要步骤是: 测评:对系统进行大量有针对性的测试,以得到合适的测试数据。 分析系统瓶颈:分析测试数据,找到其中的hotspot(热点,即bottleneck)。 性能优化:对hotspot相关的代码进行优化。 TheintroductiontoReactiveProgrammingyou'vebeenmissing--中文版 什么是FRP?在互联网上有着一大堆糟糕的解释与定义。维基百科一如既往的空泛与理论化。Stackoverflow的权威答案明显不适合初学者。ReactiveManifesto看起来是你展示给你公司的项目经理或者老板们看的东西。微软的Rxterminology"Rx=Observables+LINQ+Schedulers"过于重量级且微软味十足,只会让大部分人困惑 AndroidLollipop新特性-Palette Palette可以从一张图片中提取颜色,我们可以把提取的颜色融入到AppUI中,可以使UI风格更加美观融洽。比如,我们可

  • lvm 扩容

    pvcreate/dev/sdbvgdisplayvgextendcentos_srv-test-ansible/dev/sdblvdisplaylvextend/dev/centos_srv-test-ansible/root/dev/sdblvdisplayxfs_growfs/dev/centos_srv-test-ansible/rootdf-hT

  • 0基础django_家政类网站开发_day2_用户管理

    在之前准备工作就绪以后开始进行逻辑代码的编写: 首先是用户的注册: 用ORM操作。 我们在项目文件夹下面创建一个template文件夹(命名随便),作用是存放模板(也就是网页html),然后在setting.py里面设置路径:       完毕。   再在项目文件夹下面创建一个static_files的文件夹(命名随便),用来存放 CSS, JavaScript, Images。 1)在项目根目录下创建static_files目录来保存静态文件。 2)在demo/settings.py中修改静态文件的两个参数为 STATIC_URL='/static/' STATICFILES_DIRS=[ os.path.join(BASE_DIR,'static_files'), ] 复制 3)此时在static_files添加的任何静态文件都可以使用网址 /static/文件在static_files中的路径 来访问了。 例如,我们向static_files目录中添加一个index.html文件,在浏览器中就可以

相关推荐

推荐阅读