Flask和视图出现404错误
我刚开始学习Flask,正在尝试搭建一个非常简单的网站。以下是我的代码。
(app.py)
from __future__ import with_statement
import os
from flask import (Flask, session, redirect, url_for, abort,
render_template, flash, request)
from werkzeug import secure_filename
app = Flask(__name__)
app.debug = True
@app.route('/')
def index():
return render_template('index.html')
@app.route('/image')
def image():
return render_template('image.html')
@app.route('/video')
def video():
return render_template('video.html')
if __name__ == '__main__':
app.run()
在我的layout.html文件中,有一些链接指向上面的html文件,但当我运行app.py并点击链接时,却跳转到了404页面,我真的不明白为什么会这样。
这是layout.html的内容
<ol class="naviA">
<li class="navi">
<a class="navi" href="/image.html"><p>Image</p></a></li>
<li class="navi"><a class="navi" href="/music.html"><p>Music</p></a></li>
<li class="navi"><a class="navi" href="/video.html"><p>Video</p></a></li>
<li class="navi"><a class="navi" href="/link.html"><p>Links</p></a></li>
<li class="navi"><a class="navi" href="/storage.html"><p>Storage</p></a></li>
</li>
</ol>
如果能得到一些帮助,那就太好了。
2 个回答
0
除了@msvalkon提到的内容,你应该在模板中使用 url_for()
来生成网址,这样做更简洁、更安全,而且这是推荐的做法。这里有一些示例可以参考。
因此,你的模板中的一个链接可能看起来像这样:
<li class="navi"><a class="navi" href="{{ url_for('image') }}"><p>Image</p></a></li>
1
你链接的地址写错了。把链接中的 .html
去掉就可以了。
<ol class="naviA">
<li class="navi">
<li class="navi"><a class="navi" href="/image"><p>Image</p></a></li>
<li class="navi"><a class="navi" href="/music"><p>Music</p></a></li>
<li class="navi"><a class="navi" href="/video"><p>Video</p></a></li>
<li class="navi"><a class="navi" href="/link"><p>Links</p></a></li>
<li class="navi"><a class="navi" href="/storage"><p>Storage</p></a></li>
</li>
</ol>
如果你看看你的 @app.route
装饰器,它是这样定义的:
@app.route('/image')
def image():
return render_template('image.html')
这就意味着你现在有一个以 /image
结尾的URL。虽然模板的名字后面是 .html
,但你的flask应用并没有提供这样的地址,它是加载这个模板,并用你函数提供的数据来填充它。