Ответ 1
У меня была такая же проблема. У меня это было, потому что я изменил параметры SERVER_NAME
конфигурации на имя, которое не является именем сервера.
Вы можете решить эту ошибку, удалив SERVER_NAME
из конфигурации, если она у вас есть.
У меня есть сайт, который использует 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='/',
)
У меня была такая же проблема. У меня это было, потому что я изменил параметры SERVER_NAME
конфигурации на имя, которое не является именем сервера.
Вы можете решить эту ошибку, удалив SERVER_NAME
из конфигурации, если она у вас есть.
Я знаю, что это старо, но я столкнулся с этой проблемой. Возможно, у вас может быть любое количество проблем, но мое было то, что я прокомментировал строку from app import views
в моем __init__.py
файле. Это дало мне тот же самый симптом: каждый конечный пункт, который требовал @app.route
, и представление отвечало 404. Статические маршруты (.js и .css) были точными (это было моей подсказкой).
К этому моменту он был очень старым, но мой был связан с ошибкой при импорте. Я использую чертежи, и у меня было:
from app.auth import bp
вместо
from app.main import bp
Я импортировал неправильный бп/маршруты
Я получил эту ошибку от определения моего маршрута 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')
Была такая же проблема, потому что следующие строки
if __name__ == '__main__':
app.run(host='127.0.0.1', threaded=True)
были объявлены перед функцией и декоратором.
Перемещение этих строк в самом низу файла помогло мне.