繁体   English   中英

Flask 应用模板找不到文件,返回 404 错误

[英]Flask app template can't find file, returns 404 error

这很尴尬。 我正在 flask 中的 flash 游戏网站上工作,并且在实际加载 flash 游戏之前,它一直运行良好。 由于某种原因,游戏找不到 .swf 文件,它返回 404 错误。

这是模板文件的正文内容。 它的位置是 myproject/templates/game.html:

<h1>Game success! {{gamedictionary["name"]}}</h1>
<object width="{{gamedictionary['width']}}" height="{{gamedictionary['height']}}">
    <param name="movie" value="{{gamedictionary['game_file']}}">
    <embed src="{{gamedictionary['game_file']}}" width="{{gamedictionary['width']}}" height="{{gamedictionary['width']}}">
</object>

gamedictionary 是请求传入的字典,里面包含了游戏的所有数据,如 flash 游戏的名称、id、宽度和高度,最重要的是它的文件位置。 对于 redball,它的字典如下所示:

{
  "id": "redball1",
  "name": "Red Ball",
  "game_file": "../resources/game_files/redball1.swf",
  "icon_file": "../resources/icon_files/redball1.png",
  "desc": "Red Ball is a fun game!",
  "width": 786,
  "height": 571.63
}

我不认为这是错误所在,但如果有帮助,这是 app.py 的请求 function 返回 game.html 模板:

@app.route('/game/<string:gameid>')
def game(gameid):
    for gamedictionary in mother_data:
        if gamedictionary["id"] == gameid:
            print("Found match!")
            return render_template("game.html", gamedictionary=gamedictionary)
    else:
        return render_template("404.html")

(app.py 在 myproject/app.py 中)

for循环遍历mother_data,它是所有游戏数据字典的数组,如果字典的id匹配请求url,(是匹配游戏)则返回game.html模板,并通过gamedictionary,拥有所有数据,如上面的代码片段所示。

这就是问题出现的地方。 查看最终渲染的 html,所有其他游戏数据都可以正常加载。 游戏的名字,flash框架的宽高,都行。 问题是游戏找不到文件。 它在控制台中返回此错误。

:5000/resources/game_files/redball1.swf:1 Failed to load resource: the server responded with a status of 404 (NOT FOUND)

我该如何解决它才能找到 redball1.swf 文件并加载游戏? 请各位轻点,我很久没有在flask编程了,那时候我还只是个初学者。 如果您需要更多信息,我很乐意提供,并回答有关代码其他部分的任何问题。 感谢您的帮助!

找到了解决方案。 Flask 无法识别任何外部文件夹,只能识别静态/和模板/等文件夹。 将我的资源/文件夹更改为静态/。 奇迹般有效!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM