У меня есть небольшое приложение для отдыха со следующей структурой
Basedir
- manage.py
- load_gen
- __init__.py
- app.py
- models.py
фрагмент кода из manage.py
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
import 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. используемый URL - localhost:5000/todo/api/v1.0/tasks.
Я провел последние 3 часа, пытаясь понять, но застрял. Что я делаю не так?
app
вmanage.py
- это ваше приложение, а скорее модуль (из-за последних нескольких строк в__init__.py
). Это может быть проблемой, хотя я удивлен, что вы не сталкиваетесь с другими проблемами. - person John Szakmeister   schedule 18.12.2015app
. Сначала вы создаете экземплярApplication
в__init__.py
. Затем вы импортируете модуль с именемapp
, затеняющий экземпляр. Ваш третийapp
— это экземпляр внутриapp.py
. Два экземпляра доставят вам проблемы, особенно когда первый затенен модулем. - person dirn   schedule 18.12.2015static HEAD,OPTIONS,GET /static/[filename]
. Я считаю, что мой менеджер каким-то образом не регистрирует мое фляжное приложение. - person Abgo80   schedule 18.12.2015