尽管 routes.py 已成功导入,但所有路由都在 flask 中给出 404
All routes giving 404 in flask despite the routes.py being successfully imported
我目前正在使用烧瓶后端,但遇到了一个问题,即所有路由 return 都是 404,尽管 routes.py 显然是 运行。
routes.py:
import sys, os, json
from flask import Flask, render_template
from flask_cors import CORS, cross_origin
app = Flask(__name__)
app.config.from_pyfile('config.py')
CORS(app)
@app.route('/', endpoint='index')
@app.route('/index', methods=['GET'], endpoint='index')
@cross_origin()
def index():
print('Hello world!', file=sys.stderr)
return render_template('index.html', title='home')
@app.route('/projects', endpoint='projects') # route for projects showcase including json project data loading
@cross_origin()
def projects():
projects = os.path.join(app.static_folder, 'data', 'projects.json')
with open(projects) as pData:
data = json.load(pData)
return render_template('projects.html', title='showcase', data=data)
@app.route('/contact', endpoint='contact')
def contact():
return render_template('contact.html', title='contact')
print('Hello routes!', file=sys.stderr) #testing line
当我启动它时,输出是这样的:
* Serving Flask app 'ClayG' (lazy loading)
* Environment: development
* Debug mode: on
Hello routes!
* Restarting with stat
* Debugger is active!
Hello routes!
* Debugger PIN: 274-753-929
* Running on http://127.0.0.1:5000/
routes.py 末尾的打印功能运行,所以我的应用程序正在运行,但是当我访问 localhost:5000 时,我得到一个 404,在终端输出中只有这个
127.0.0.1 - - [05/Feb/2022 17:20:29] "GET / HTTP/1.1" 404 -
其他文件和文件结构
.
├── ClayG.py
├── .flaskenv
├── app
│ ├── config.py
│ ├── routes.py
│ └── __init__.py
ClayG.py
import os, sys
sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__))))
from app import app
.flaskenv
FLASK_APP=ClayGale
FLASK_ENV=development
init.py
from flask import Flask
from . import routes
app = Flask(__name__)
config.py
class Config:
STATIC_FOLDER = 'static'
TEMPLATES_FOLDER = 'templates'
DEBUG = True
TESTING = True
我注意到的一件事是将 FLASK_ENV = 'development' 添加到配置 class 是它仍然作为生产启动,我只能让它在开发中启动使用 .flaskenv 文件。不幸的是,我对从这里开始做什么感到困惑,所以关于尝试什么的任何智慧都会有所帮助。
您已经创建了两个 Flask 应用程序。 routes.py
中的一个带有端点,__init__.py
中的一个新的完全是空的。您应该在 __init__.py
文件中使用之前创建的应用程序:
from . import routes
app = routes.app
我目前正在使用烧瓶后端,但遇到了一个问题,即所有路由 return 都是 404,尽管 routes.py 显然是 运行。
routes.py:
import sys, os, json
from flask import Flask, render_template
from flask_cors import CORS, cross_origin
app = Flask(__name__)
app.config.from_pyfile('config.py')
CORS(app)
@app.route('/', endpoint='index')
@app.route('/index', methods=['GET'], endpoint='index')
@cross_origin()
def index():
print('Hello world!', file=sys.stderr)
return render_template('index.html', title='home')
@app.route('/projects', endpoint='projects') # route for projects showcase including json project data loading
@cross_origin()
def projects():
projects = os.path.join(app.static_folder, 'data', 'projects.json')
with open(projects) as pData:
data = json.load(pData)
return render_template('projects.html', title='showcase', data=data)
@app.route('/contact', endpoint='contact')
def contact():
return render_template('contact.html', title='contact')
print('Hello routes!', file=sys.stderr) #testing line
当我启动它时,输出是这样的:
* Serving Flask app 'ClayG' (lazy loading)
* Environment: development
* Debug mode: on
Hello routes!
* Restarting with stat
* Debugger is active!
Hello routes!
* Debugger PIN: 274-753-929
* Running on http://127.0.0.1:5000/
routes.py 末尾的打印功能运行,所以我的应用程序正在运行,但是当我访问 localhost:5000 时,我得到一个 404,在终端输出中只有这个
127.0.0.1 - - [05/Feb/2022 17:20:29] "GET / HTTP/1.1" 404 -
其他文件和文件结构
.
├── ClayG.py
├── .flaskenv
├── app
│ ├── config.py
│ ├── routes.py
│ └── __init__.py
ClayG.py
import os, sys
sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__))))
from app import app
.flaskenv
FLASK_APP=ClayGale
FLASK_ENV=development
init.py
from flask import Flask
from . import routes
app = Flask(__name__)
config.py
class Config:
STATIC_FOLDER = 'static'
TEMPLATES_FOLDER = 'templates'
DEBUG = True
TESTING = True
我注意到的一件事是将 FLASK_ENV = 'development' 添加到配置 class 是它仍然作为生产启动,我只能让它在开发中启动使用 .flaskenv 文件。不幸的是,我对从这里开始做什么感到困惑,所以关于尝试什么的任何智慧都会有所帮助。
您已经创建了两个 Flask 应用程序。 routes.py
中的一个带有端点,__init__.py
中的一个新的完全是空的。您应该在 __init__.py
文件中使用之前创建的应用程序:
from . import routes
app = routes.app