2016-02-12 60 views
-1

我正在尝试制作一个TicTacToe网络应用程序,其AI作为播放器2进行播放。为此,我在python中编写了游戏和AI代码,编写了html/javascript前端,并使用了烧录服务器。在HTML我的img标签和资产等(这些被嵌入在传统方式的HTML文件):如何在使用Flask后端时使用HTML和图片资源?

<img id="pic" src="assets/images/hil.jpg" class="X"> 
 
or 
 
<audio src="assets/audio/smw_coin.wav" id="marioStart" preload="auto"></audio>

不过,我得到这种形式的错误。

127.0.0.1 - - [11 /二月/ 2016 23点52分22秒] “GET /assets/audio/smb_pipe.wav HTTP/1.1” 404 -

127.0.0.1 - - [11 /二月/ 2016 23:52:22]“GET /assets/js/jquery-1.11.3.js HTTP/1.1”404 -

烧瓶似乎将此解释为域名而不是检查资产文件夹。有谁知道如何让Flask将src请求解释为烧瓶模板文件夹中的目录?

PS。这也是一个问题,因为它阻止我在我的html文件中包含JQuery。

+0

[Flask在我的包的'static'目录中找不到文件的可能的重复](http://stackoverflow.com/questions/35593283/flask-not-finding-files-in-my-packages-static-directory) B/c链接的问题更普遍地问,这个问题应该删除。 – franklin

回答

0

你想使用url_for

<img src="{{ url_for('static', filename='images/hil.jpg') }}"> 

默认情况下,你会看起来像被从static文件夹中担任了/static/images/hil.jpg一个URL结束。如果你想保留你的URL,你必须告诉Flask为静态资产使用不同的URL路径。

app = Flask(__name__, static_url_path='/assets') 

这会给你看起来像/assets/images/hil.jpg' that is served up from your static`文件夹中的网址。如果您已命名文件夹资产并且不想重命名它,则可以让Flask在不同的文件夹中查找静态资产。

app = Flask(__name__, static_folder='assets') 

这会给你看起来像被从assets文件夹中担任了/assets/images/hil.jpg的URL。在这种情况下,您不需要指定两个参数,因为static_url_path默认情况下使用static_folder

+0

工作就像一个魅力!非常感谢。 – Nali