我仍然是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页面,我真的不确定为什么。< / p>
这是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>
任何帮助都会很棒。
答案 0 :(得分: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
结尾的网址。该模板肯定以.html
结束,但您的烧瓶应用程序不提供此类端点,它会加载该模板并使用您的函数提供的数据填充它。
答案 1 :(得分:0)
除了@msvalkon所说的,你应该使用url_for()
在模板中生成URL,因为它更干净,更安全,而且只是“方式”。这里有一些examples。
因此,模板中的一个链接可能如下所示:
<li class="navi"><a class="navi" href="{{ url_for('image') }}"><p>Image</p></a></li>