我有一个使用Flask的网站。它曾经运作良好,但从最近,每个请求返回404,似乎它找不到正确的端点。但是:
url_for
有效,app.view_functions
也包含所有路线。/
以及/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='/',
)
答案 0 :(得分:39)
我有同样的问题。我有它因为我将配置的参数SERVER_NAME
更改为不是服务器名称的名称。
您可以通过从配置中删除SERVER_NAME
来解决此错误。
答案 1 :(得分:8)
我知道这已经过时了,但我遇到了同样的问题。你的问题可能是任何问题,但我的问题是我在from app import views
文件中注释了__init__.py
行。它给了我相同的症状:每个需要@app.route
的端点和一个视图用404响应。静态路由(.js和.css)很好(这是我的线索)。
答案 2 :(得分:0)
此时非常古老,但我的导入错误与我有关。我正在使用蓝图,我有:
from app.auth import bp
而不是
from app.main import bp
我导入了错误的bp / routes
答案 3 :(得分:0)
我在create_app方法中定义了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')
答案 4 :(得分:0)
由于以下几行而出现相同的问题
if __name__ == '__main__':
app.run(host='127.0.0.1', threaded=True)
在函数和装饰器之前声明。
将这些行移到文件的最底部对我有帮助。
答案 5 :(得分:0)
我遇到了这个问题,就我而言,是我的templates
。我有这样的索引页:
<div>
<a href="index.html">Home</a> |
<a href="login.html">Login</a> |
<a href="register.html">Register</a>
<hr>
</div>
我应该使用url_for('index')
而不是index.html
。
<div>
<a href="{{ url_for('index') }}">Home</a> |
<a href="{{ url_for('login') }}">Login</a> |
<a href="{{ url_for('register') }}">Register</a>
<hr>
</div>
答案 6 :(得分:0)