【Tornado】关于静态文件无法加载【404 Not found】的错误解决

"在使用Tornado框架进行网页开发时,作者遇到MP4视频作为动态背景无法加载的问题,报404NotFound错误。经过一系列尝试,作者发现是静态文件引用路径设置不正确。通过理解Tornado的template_path和static_path,将MP4文件存放在指定的静态文件夹"data"下,解决了问题。该问题实际上是一个常见的静态资源引用错误,解决方法是确保文件位于声明的静态路径中。"
摘要由CSDN通过智能技术生成

最近在用python写网页的时候用到了一个新的web框架——Tornado
对这个框架不是很熟悉的我,直接上手,想要尝试进行一些网页的排版,准备导入个MP4作为动态背景,
便写下了如下代码

<video src="background.mp4"  id="bjimg"  muted autoplay="autoplay" loop="loop"  ></video>

但遇到了如下的报错404 Not Found
在这里插入图片描述
第一反应,应该是路径错误,但我此时明明把他与html放在同一目录下的,我没有想明白,于是我尝试将src改为绝对路径,但还是报了同样的错误,
很无奈,我又把这个MP4文件挪到了其他文件夹中,重新写src,但依然报错。
我当时怎么也没想明白,我想也许是框架的问题把,于是我去查tornado框架相关的东西,看了一些tornado框架基础的入门视频,对其终于有了一丝丝了解,知道了其与django类似,但与django的大而全不同,它的框架很小,需要什么东西需要我们自己创建,但依然对这个问题一筹莫展。
所以我开始研究tornado中的路径引用,

template_path = "templates/"
static_path = "./data/"

知道了template_path和static_path,知道了静态文件是用静态地址进行引用,即/static/进行引用,然而傻乎乎的我又犯了一个错误,自己创建了一个staic文件,并把视频放在里面,然后用

<video src="/static/background.mp4"  id="bjimg"  muted autoplay="autoplay" loop="loop"  ></video>

去调用死活调用不出效果,后面一看我的静态地址明明申明的是./data/啊,直接把MP4存在data中不就行了!
果然问题解决。

解决问题后,回头来看,其实这个问题很简单,就是一个由于静态地址引用错误,导致无法读取文件资源的问题,只要将文件保存到我们声明的静态地址中的文件即可。

Tornado是一个Python的Web框架,用于开发高性能、可扩展的Web应用程序。在Tornado中,静态文件与重定向是非常常见的功能。下面是对它们的使用说明: 1. 静态文件: 在Tornado中,可以使用`StaticFileHandler`处理静态文件。可以通过以下方式来创建一个`StaticFileHandler`: ```python import tornado.web class StaticHandler(tornado.web.StaticFileHandler): pass ``` `StaticFileHandler`的默认路径是`./static`,可以通过设置`StaticFileHandler`的`path`属性来指定静态文件的路径。例如: ```python import tornado.web class StaticHandler(tornado.web.StaticFileHandler): def initialize(self, path): super().initialize(path=path) ``` 在使用`StaticFileHandler`时,需要指定静态文件的URL和文件路径。可以通过以下方式来指定: ```python import tornado.web class StaticHandler(tornado.web.StaticFileHandler): def initialize(self, path): super().initialize(path=path, default_filename='index.html') def get(self): return super().get(self.request.path[1:]) ``` 上面的代码中,`default_filename`指定了默认返回的文件名,如果URL中没有指定具体的文件名,则返回该文件。`get()`方法实际上是调用了`StaticFileHandler`的`get()`方法,`self.request.path[1:]`是指去掉URL中的第一个字符(即'/')后的字符串。例如,当URL为`http://localhost:8000/static/css/style.css`时,`self.request.path[1:]`的值为`static/css/style.css`。 2. 重定向: 在Tornado中,可以使用`RedirectHandler`来进行重定向。可以通过以下方式来创建一个`RedirectHandler`: ```python import tornado.web class RedirectHandler(tornado.web.RedirectHandler): pass ``` `RedirectHandler`的默认代码是302,可以通过设置`RedirectHandler`的`code`属性来指定重定向的代码。例如: ```python import tornado.web class RedirectHandler(tornado.web.RedirectHandler): def initialize(self, url): super().initialize(url=url, code=301) ``` 在使用`RedirectHandler`时,需要指定重定向的URL。可以通过以下方式来指定: ```python import tornado.web class RedirectHandler(tornado.web.RedirectHandler): def initialize(self, url): super().initialize(url=url, permanent=True) def get(self): return super().get(self.request.path[1:]) ``` 上面的代码中,`permanent`指定了是否永久重定向。`get()`方法实际上是调用了`RedirectHandler`的`get()`方法,`self.request.path[1:]`是指去掉URL中的第一个字符(即'/')后的字符串。例如,当URL为`http://localhost:8000/old`时,`self.request.path[1:]`的值为`old`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值