为什么即使链接在服务器上,我也会收到"404 Not Found"错误?

use*_*960 10 python templates rendering flask

我正在使用Flask 在PythonAnywhere上运行一个简单的测试站点.当我运行脚本时,初始站点(index.html)出现,一切似乎都很好.但是,当我点击任何链接(如signup.html)时,我收到404错误:

未找到
在服务器上找不到请求的URL.
如果您手动输入了URL,请检查拼写,然后重试.

但是,HTML文件和index.html一起都在templates文件夹中.为什么不能在服务器上找到它们?

以下是运行应用程序的Python代码:

from flask import Flask
from flask import render_template

app = Flask(__name__)

@app.route('/')

def runit():
    return render_template('index.html')

if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

以下是index.html的HTML部分,其中包含链接:

<a class="btn btn-lg btn-success" href="signup.html">Sign up</a>
Run Code Online (Sandbox Code Playgroud)

Jac*_*nda 5

您需要为您的注册 URL 创建另一个路由,因此您的主 webapp 代码需要为“/signup.html”添加一个路由,即

from flask import Flask
from flask import render_template

app = Flask(__name__)

@app.route('/')
def runit():
    return render_template('index.html')

@app.route('/signup.html')
def signup():
    return render_template('signup.html')

if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

如果你想让你的 URL 更简洁一些,你可以在你的 Python 中做这样的事情:

@app.route('/signup')
def signup():
    return render_template('signup.html')
Run Code Online (Sandbox Code Playgroud)

并更改您的链接代码以匹配。

<a class="btn btn-lg btn-success" href="signup">Sign up</a>
Run Code Online (Sandbox Code Playgroud)

Flask 的主要文档在他们的快速入门指南中有一个很好的路由概述:http : //flask.pocoo.org/docs/quickstart/