分割应用和视图代码时的NameError

时间:2016-02-09 16:01:37

标签: python flask

我想将我的代码分为两部分,即应用初始化和视图定义。我导入了我的观点并定义了我的应用,但我得到NameError: name 'manager' is not defined。为什么我收到此错误?如何正确分割我的代码?

manage.py

from flask import Flask,render_template
from flask.ext.script import Manager

import viewports

manager = Flask(__name__)

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

viewports.py

@manager.route('/')
def Home():
     return render_template('Home.html', title='FrontPage')

1 个答案:

答案 0 :(得分:2)

您创建了一个循环导入:首先导入导入viewports的{​​{1}},manager仅在导入viewports后定义。您也没有正确组织代码,所有内容都应该在一个包中。您还混淆了创建Flask-Script管理器并创建Flask应用程序。此外,不推荐使用flask.ext,直接从包名称导入。

my_project/
    my_app/
        __init__.py
        views.py
    manage.py

__init__.py

from flask import Flask
from flask_script import Manager

app = Flask(__name__)
manager = Manager(app)

from my_app import views

views.py

from my_app import app

@app.route('/')
def index():
    return 'Hello, World!'

manage.py

from my_app import manager

manager.run()