web-dev-qa-db-fra.com

Erreurs inexplicables dans Flask 404

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:

  • Localement, le site fonctionne toujours, mais sur mon VPS, il montre ce comportement étrange.
  • url_for fonctionne et app.view_functions contient également tous les itinéraires.
  • Et pourtant, je continue à avoir 404 sur le VPS, même pour / 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='/',
    )
21
Robin

J'ai eu le même problème. Je l’avais parce que j’ai changé les paramètres SERVER_NAMEde 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.

39
Alexis Benoist

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).

8
Scott

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

0
user7804097

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') 
0
Braden Holt