Flask URL 路径不工作
Flask URL path not working
我开始创建一个非常简单的 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 中留下尾随 space 并清除我的浏览器缓存以防出现重定向错误但仍然没有。当我在 Live Server 和 Flask 中打开联系页面并将它们并排放置时,它们具有完全相同的 url 只是在不同的本地主机端口上。我错过了什么?
您不需要在 href
路径中提供文件名:
<a href="/contact">Contact</a>
您的路线名为 contact
,但您的 link 是去 contact.html
。这些名称必须相同。
尝试以下方法之一:
@app.route('/contact.html')
或
<a href="contact">Contact</a>
正如别处所指出的,推荐的用法是 url_for()
:
<a href={{url_for('contact')}}>Contact</a>
不要使用contact.html仅路由名称如下。
<a href="{{ url_for('app.contact') }}">Contact</a>
意思...
<a href=" {{ url_for('blueprint_name.route_name') }}">Route</a>
我开始创建一个非常简单的 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 中留下尾随 space 并清除我的浏览器缓存以防出现重定向错误但仍然没有。当我在 Live Server 和 Flask 中打开联系页面并将它们并排放置时,它们具有完全相同的 url 只是在不同的本地主机端口上。我错过了什么?
您不需要在 href
路径中提供文件名:
<a href="/contact">Contact</a>
您的路线名为 contact
,但您的 link 是去 contact.html
。这些名称必须相同。
尝试以下方法之一:
@app.route('/contact.html')
或
<a href="contact">Contact</a>
正如别处所指出的,推荐的用法是 url_for()
:
<a href={{url_for('contact')}}>Contact</a>
不要使用contact.html仅路由名称如下。
<a href="{{ url_for('app.contact') }}">Contact</a>
意思...
<a href=" {{ url_for('blueprint_name.route_name') }}">Route</a>