3

MongoDB 站点上的Tumblelog 应用程序不起作用。

我完全遵循了这个例子,当我在本地主机上运行它时出现 404 错误。我在 Ubuntu 12.0.4 上使用 Eclipse Indigo (3.7.2) 和 pyDev。

我不确定是不是因为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_blueprints永远不会被调用 -app.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在不同的文件中创建并将两者都app导入blueprint第三个文件以运行所有内容:

#  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 回答