使用Flask和MongoEngine示例的Tumblelog应用程序不起作用 - 完全新手

时间:2012-10-12 20:44:04

标签: python mongodb flask

MongoDB网站上的Tumblelog app不起作用。

我绝对遵循了这个例子,当我在本地主机上运行时出现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)

否则我完全按照教程。

1 个答案:

答案 0 :(得分: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并将appblueprint导入到运行一切的第三个文件:

#  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()