3

MongoDBサイトのTumblelogアプリが機能しません。

私はこの例に完全に従いましたが、ローカルホストで実行すると404エラーが発生します。Ubuntu12.0.4でpyDevとともにEclipseIndigo(3.7.2)を使用しています。

register_blueprintsに含めたのが原因かどうかはわかりません__init__.py

私はチュートリアルのようにそれをこのようにしました:

from flask import Flask
from flask.ext.mongoengine import MongoEngine

app = Flask(__name__)
app.config["MONGODB_DB"] = "my_tumble_log"
app.config["SECRET_KEY"] = "KeepThisS3cr3t"

db = MongoEngine(app)


if __name__ == '__main__':
    app.run()


    def register_blueprints(app):
    # Prevents circular imports
        from tumblelog.views import posts
        app.register_blueprint(posts)
    register_blueprints(app)

それ以外の場合は、チュートリアルに正確に従いました。

4

1 に答える 1

4

register_blueprintsapp.runスクリプトを強制終了するまで(ルートを追加しても意味がありません)、ブロックが呼び出されることはありません。

順序を変更すると、すべてが実行されます。

def register_blueprints(app):
# Prevents circular imports
    from tumblelog.views import posts
    app.register_blueprint(posts)

register_blueprints(app)

if __name__ == '__main__':
    app.run()

regist_blueprintsは実際には循環インポートを妨げていません-循環インポートを回避するパターンはapp、を別のファイルに作成し、両方appblueprint3番目のファイルにインポートしてすべてを実行することです。

#  application.py
from flask import Flask  # etc.

app = Flask("your_package_name")

 

# tumblelog/views.py
from flask import Blueprint, current_app  # etc.

posts = Blueprint("tumblelog")

@posts.route("/")
def index():
    # use current_app rather than app here

 

# run_server.py (use the same pattern for .wsgi files)
from application import app
from tumblelog.views import posts

app.register_blueprint(posts)

if __name__ == "__main__":
    app.run()
于 2012-10-12T21:26:50.797 に答える