J'ai un site Web qui utilise Flask. Auparavant, cela fonctionnait bien, mais depuis récemment, chaque demande renvoie un 404 et il semble qu’elle ne trouve pas les bons terminaux. Toutefois:
url_for
fonctionne et app.view_functions
contient également tous les itinéraires./
et tout ce qui est sous /static/
.Voici une partie du code, c'est un peu compliqué à montrer et tout n'est pas pertinent:
#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 __== '__main__':
app.run(debug=True)
else:
app.config.update(
SERVER_NAME='snip.snip.com:80',
APPLICATION_ROOT='/',
)
J'ai eu le même problème. Je l’avais parce que j’ai changé les paramètres SERVER_NAME
de la configuration en un nom qui n’est pas le nom du serveur.
Vous pouvez résoudre ce problème en supprimant SERVER_NAME
de la configuration si vous en avez un.
Je sais que c'est vieux, mais je viens de rencontrer ce même problème. Vous avez peut-être plusieurs problèmes, mais le mien est que j'avais commenté la ligne from app import views
dans mon fichier __init__.py
. Cela m'a donné le même symptôme: chaque point de terminaison nécessitant @app.route
et une vue répondait par 404. Les routes statiques (.js et .css) étaient bien (c'était mon indice).
Extrêmement vieux par ce point, mais le mien était lié à un bogue lors de l'importation. J'utilise des plans et j'ai eu:
from app.auth import bp
au lieu de
from app.main import bp
J'importais le mauvais p/routes
J'ai reçu cette erreur en définissant mon itinéraire flask_restful dans la méthode create_app. Je ne comprends toujours pas pourquoi cela n'a pas fonctionné, mais une fois que j'ai changé de champ d'application, je l'ai déplacé à l'extérieur, comme indiqué ci-dessous.
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')