我正在学习https://courses.edx.org/courses/course-v1:HarvardX+CS50W+Web/courseware/3b4d945d89eb40bcad81746770a81c3b/c62f675bf7f94f0e91b408cacda56451/?child=first 这个课程在烧瓶上。这是基本的烧瓶代码。当我在第一条路线上时,我很好,但是当我尝试放斜线并进入另一页时,它不起作用。我收到此消息:“在服务器上找不到请求的URL。如果您手动输入URL,请检查拼写,然后重试。”
我确实跑过FLASK_APP=app.py flask run
保存后。
app= Flask(__name__)
@app.route('/')
def index():
return "index"
@app.route('/me')
def me():
return "me"
if __name__== "__main__":
app.run(debug=True)```
In class it works well. When i do it it does not
``` 127.0.0.1 - - [08/Jul/2019 02:43:48] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [08/Jul/2019 02:43:55] "GET /me/ HTTP/1.1" 404 -
我猜最后404是问题
回复后
app= Flask(__name__)
strict_slashes=False
@app.route('/')
def index():
return "index"
@app.route('/me/')
def me():
return "me"
if __name__== "__main__":
app.run(debug=True)
答案 0 :(得分:0)
您已经明确声明了您的“ / me”路由,且没有尾部斜杠。但是,在调用URL时,您在“ / me /”末尾使用斜杠进行调用。默认情况下,Werkzeug(Flask开发应用程序服务器)具有“ strict_slashes = True”规则,该规则要求您在调用URL时遵循确切的路由声明。换句话说,如果在代码中声明了“ @ app.route('/ me')”,则应调用“ 127.0.0.1/me”,而不是“ 127.0.0.1/me /”。
最后删除斜杠(例如http://localhost/me)将解决您的问题。如果要删除默认规则,还可以更改Werkzeug设置并设置strict_slashes = False。
答案 1 :(得分:0)
我会说创建一个 app.errorhandler(404) 然后定义在你收到错误后要做什么来检查它是否是 404 错误,以及其他错误。我还要说使用 html 并制作可用于进入不同页面的链接,这比手动输入更容易。这是我的代码:
蟒蛇:
from flask import Flask, render_template
app = Flask(__name__)
app.route('/')
def home():
return render_template('home.html')
app.route('/me')
def me():
return 'me'
app.errorhandler(404)
def error(arg):
return 'wrong url'
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080)
html:
<!-- you can use css to make the link look better or <style> </style>-->
<a href="/me"></a>