我开始创建一个非常简单的Flask应用程序,就像我之前所做的那样,我收到的404错误完全超出了我的想法。我的目录结构如下:
Site/
----static/
--------css/
------------css files
--------img/
------------image files
----templates/
--------contact.html
--------index.html
app.py
我遇到的问题是index.html页面中有一个按钮,可以将您带到contact.html页面。
<nav class="main-nav">
<ul>
<li>
<a href="#">Home</a>
</li>
<li>
<a href="#">About Me</a>
</li>
<li>
<a href="#">Resume</a>
</li>
<li>
<a href="contact.html">Contact</a>
</li>
</ul>
</nav>
此按钮将您带到联系页面,该页面与我在VSCode中使用Live Server时的工作方式完全一致。问题是当我尝试在Flask本地服务器中转到此页面时。这是app.py:
from flask import Flask, render_template
app = Flask (__name__)
app.debug = True
@app.route('/')
def index():
return render_template('index.html')
@app.route('/contact')
def contact():
return render_template('contact.html')
if __name__ == '__main__':
app.run()
我一直遵循这种基本语法来路由到页面,它一直工作到现在,我无法弄清楚为什么会出现404错误。我已经尝试在app.route中留下一个尾随空格并清除我的浏览器缓存,以防它出现重定向错误但仍然没有。当我在Live Server和Flask中打开联系页面并将它们放在一起时,它们在不同的localhost端口上具有完全相同的URL。我错过了什么?
答案 0 :(得分:1)
您无需在href
路由中提供文件名:
<a href="/contact">Contact</a>
答案 1 :(得分:1)
Your route is named contact
, but your link is to contact.html
. Those names need to be identical.
Try one of these:
@app.route('/contact.html')
OR
<a href="contact">Contact</a>
As was pointed out elsewhere, the recommended usage is url_for()
:
<a href={{url_for('contact')}}>Contact</a>
答案 2 :(得分:0)
不仅使用contact.html路由名称,如下所示。
<a href="{{ url_for('app.contact') }}">Contact</a>
...含义
<a href=" {{ url_for('blueprint_name.route_name') }}">Route</a>