无法解释的Flask 404错误
我有一个使用Flask的网页。之前运行得很好,但最近每次请求都返回404错误,似乎找不到正确的接口。不过:
- 在本地,网站仍然可以正常工作,只有在我的VPS上出现了这个奇怪的情况。
url_for
可以正常使用,app.view_functions
也包含了所有的路由。- 然而,我在VPS上依然收到404错误,连
/
和/static/
下面的内容也不例外。
这里是部分代码,内容有点多,不方便全部展示,而且不是所有的都相关:
#snip
from flask import Flask, render_template, abort, request, redirect, url_for, session
from flask.ext.babelex import Babel
from flask.ext import babelex
#snip
app = Flask(__name__)
app.secret_key = #snip
#snip
#just one of the routes
@app.route('/')
def about():
return render_template('about.html')
#snip
@app.errorhandler(404)
def page_not_found(e):
#snip
return render_template('404.html'), 404
#snip
if __name__ == '__main__':
app.run(debug=True)
else:
app.config.update(
SERVER_NAME='snip.snip.com:80',
APPLICATION_ROOT='/',
)
8 个回答
2
我在创建应用程序的方法里定义flask_restful的路由时遇到了这个错误。我还是不太明白为什么这样不行,但当我把它的范围/位置调整到下面这样之后,它就正常工作了。
from flask import Flask
from flask_restful import Resource
from extensions import db, api
from users.resources import User
def create_app():
app = Flask(__name__)
app.config.from_object('settings')
db.init_app(app)
api.init_app(app)
return app
api.add_resource(User, '/users')
2
这个问题现在看起来已经很久了,但我遇到的情况是跟导入时的一个错误有关。我在使用蓝图的时候,写成了:
from app.auth import bp
而应该是
from app.main import bp
我导入了错误的蓝图/路由。
15
我知道这个问题已经有点老了,但我刚碰到同样的问题。你的问题可能有很多原因,但我的原因是我在 __init__.py
文件里把 from app import views
这一行注释掉了。这样做后,我遇到了同样的情况:每个需要 @app.route
和视图的接口都返回了404错误。静态文件(.js和.css)没有问题(这让我意识到问题所在)。
23
我也遇到了同样的问题,因为下面这些代码
if __name__ == '__main__':
app.run(host='127.0.0.1', threaded=True)
是在函数和装饰器之前写的。
把这些代码移动到文件的最底部后,问题就解决了。
61
我也遇到过同样的问题。这个问题是因为我把配置里的 SERVER_NAME
参数改成了一个不是服务器名字的名称。
如果你也有这个问题,可以通过把配置中的 SERVER_NAME
删除来解决。