Flask URL路径无效

时间:2018-03-13 15:01:26

标签: python html flask url-routing

我开始创建一个非常简单的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。我错过了什么?

3 个答案:

答案 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>