Python烧瓶方法定义

Python烧瓶方法定义,python,flask,Python,Flask,使用Flask时,是否必须在一个文件中包含所有方法定义,因为我试图在另一个文件中移动某些方法定义,但404未找到错误。您可以将声明移动到其他文件中,只要该文件引用了您创建的Flask对象,但是,如果您的应用程序越来越大,您可能需要开始研究,您不必在一个文件中定义所有内容。这在一个更大的应用程序中是非常糟糕的:)阅读并查看那里的建议(包括前面答案中提到的蓝图,这是组织大应用程序的非常好的方式) 还有一个关于如何组织和创建更大的应用程序的好方法。也可能有帮助;) 其他的方法、类和所有不是特定于Fla

使用Flask时,是否必须在一个文件中包含所有方法定义,因为我试图在另一个文件中移动某些方法定义,但404未找到错误。

您可以将声明移动到其他文件中,只要该文件引用了您创建的
Flask
对象,但是,如果您的应用程序越来越大,您可能需要开始研究

,您不必在一个文件中定义所有内容。这在一个更大的应用程序中是非常糟糕的:)阅读并查看那里的建议(包括前面答案中提到的蓝图,这是组织大应用程序的非常好的方式)

还有一个关于如何组织和创建更大的应用程序的好方法。也可能有帮助;)


其他的方法、类和所有不是特定于Flask的东西都是简单的Python,所以也不需要将它们放在一个文件中。

正如Flask中所建议的,您可以使用Blueprint来完成更大的应用程序。我喜欢创建彼此不太耦合的模块化应用程序的方法。所以你的蓝图大部分都有应用程序功能,比如路由或请求前

simple_page = Blueprint('simple',__name__,template_folder='templates')
@simple_page.route('/', defaults={'page': 'index'})
@simple_page.route('/<page>')
def show(page):
    try:
        return render_template('pages/%s.html' % page)
    except TemplateNotFound:
        abort(404)
关于蓝图的一些问题:

  • 蓝图不是应用程序,不要指望他们会这样做
  • Blueprint可以定义自己的模板文件夹,这对您很有用 可以按每个蓝图的文件夹模块指定特定模板并订购应用程序
  • 当试图获取一个“.”时,应始终记住附加“.” 资源:

    烧瓶应用程序的('.index')url#u

    用于('.index')的url#用于蓝图

  • Blueprint是烧瓶中相当新的解决方案,在撰写本答案时,它是多文件夹中模块化应用程序的最佳解决方案,并在所有应用程序中共享同一烧瓶对象amos


谢谢,示例应用非常有用
app = Flask(__name__)
app.register_blueprint(simple_page)