0

次の構造の小さな残りのアプリケーションがあります

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時間を費やしましたが、立ち往生しています。私は何を間違っていますか?

4

2 に答える 2

1

app実行する とルートappを登録する は同じではありません。

あなたmanage.pyが持っている

from load_gen import app

manager = Manager(app)

app.pyload_app.py)あなたは持っています

app = Flask(__name__)

@app.route('/todo/api/v1.0/tasks', methods=['GET'])
def get_tasks():
    return jsonify({'tasks': [make_public_task(task) for task in tasks]})

appどこでも同じものを使用する必要があります。で定義しないでくださいappload_app.pyすべて設定する必要があります。最後にインポートを削除して__init__.py、変更load_app.pyするだけです

from load_gen import app
于 2015-12-18T05:24:13.367 に答える