【发布时间】:2015-12-17 22:51:56
【问题描述】:
我有一个具有以下结构的小型休息应用程序
Basedir
- manage.py
- load_gen
- __init__.py
- app.py
- models.py
manage.py 中的代码 sn-p
from load_gen import app, db
from load_gen.models import User
from flask.ext.script import Manager
manager = Manager(app)
if __name__ == '__main__':
manager.run()
来自 init.py
的代码 sn-pimport os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'test.db')
db = SQLAlchemy(app)
from load_gen import models
from load_gen import app
最后是 app.py
from flask import Flask, jsonify, abort,make_response,url_for
from models import User
app = Flask(__name__)
tasks = [
{
'id': 1,
'title': u'Buy groceries',
'description': u'Milk, Cheese, Pizza, Fruit, Tylenol',
'done': False
}
]
def make_public_task(task):
new_task = {}
for field in task:
if field == 'id':
new_task['uri'] = url_for('get_task', task_id=task['id'], _external=True)
else:
new_task[field] = task[field]
return new_task
@app.route('/todo/api/v1.0/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': [make_public_task(task) for task in tasks]})
if __name__ == '__main__':
app.run(debug=True)
当我尝试使用 python manage.py runserver 运行它时,我的应用程序路由未注册并且我不断收到 404 Not Found。 使用的网址 - localhost:5000/todo/api/v1.0/tasks。
我花了 3 个小时试图弄清楚,但被卡住了。我做错了什么?
【问题讨论】:
-
我不认为
manage.py中的app是您的应用程序,而是模块(由于__init__.py中的最后几行)。这可能是问题所在,但我很惊讶您没有遇到其他问题。 -
你有 app = Flask("app") init.py (init.py ?) 和 app = Flask(name)应用程序.py。也很奇怪
-
manage.py 中的应用程序打印“
”。它从 _init.py 加载。你能告诉我我还需要在那里使用什么吗? -
@Gerard Rozsavolgyi - 我正在测试它。我将其更改为 Flask(name)。将编辑代码。
-
您有三个名为
app的东西。首先在__init__.py中创建一个Application实例。然后导入一个名为app的模块,隐藏实例。您的第三个app是app.py中的实例。这两个实例会给你带来问题,尤其是当第一个被模块遮蔽时。
标签: python flask flask-script