Ошибки необъяснимой колбы 404

У меня есть сайт, который использует Flask. Он работал хорошо, но с тех пор каждый запрос возвращает 404, и, похоже, он не может найти правильные конечные точки. Однако:

  • Локально, сайт все еще работает, только на моем VPS он показывает это странное поведение.
  • url_for работает, а app.view_functions содержит все маршруты.
  • И все же я продолжаю получать 404 на VPS, даже для / и всего, что находится под /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='/',
    )

Ответы

Ответ 1

У меня была такая же проблема. У меня это было, потому что я изменил параметры SERVER_NAME конфигурации на имя, которое не является именем сервера.

Вы можете решить эту ошибку, удалив SERVER_NAME из конфигурации, если она у вас есть.

Ответ 2

Я знаю, что это старо, но я столкнулся с этой проблемой. Возможно, у вас может быть любое количество проблем, но мое было то, что я прокомментировал строку from app import views в моем __init__.py файле. Это дало мне тот же самый симптом: каждый конечный пункт, который требовал @app.route, и представление отвечало 404. Статические маршруты (.js и .css) были точными (это было моей подсказкой).

Ответ 3

К этому моменту он был очень старым, но мой был связан с ошибкой при импорте. Я использую чертежи, и у меня было:

from app.auth import bp

вместо

from app.main import bp

Я импортировал неправильный бп/маршруты

Ответ 4

Я получил эту ошибку от определения моего маршрута flask_restful внутри метода create_app. Я до сих пор не совсем понимаю, почему это не сработало, но как только я изменил область действия/переместил ее наружу, как показано ниже, это сработало.

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

Ответ 5

Была такая же проблема, потому что следующие строки

if __name__ == '__main__':
    app.run(host='127.0.0.1', threaded=True)

были объявлены перед функцией и декоратором.

Перемещение этих строк в самом низу файла помогло мне.