Flask 应用程序不使用在另一个模块中定义的路由

Nik*_*s R 3 python module flask python-2.7

我无法使用一个创建 Flask 应用程序对象并运行它的模块,以及一个实现视图(路由和错误处理程序)的模块。这些模块包含在 Python 包中。

app.py

from flask import Flask
app = Flask('graphlog')

import config
import views

if __name__ == '__main__':
    app.run(host=config.host, port=config.port, debug=config.debug)
Run Code Online (Sandbox Code Playgroud)

views.py

from app import app

@app.route('/')
def index():
    return 'Hello!'
Run Code Online (Sandbox Code Playgroud)

config.py

host = 'localhost'
port = 8080
debug = True
Run Code Online (Sandbox Code Playgroud)

我总是得到 Flask 的默认“404 Not Found”页面。但是,如果我将 的内容移动view.pyapp.py,它会起作用。这里有什么问题?

Mar*_*ers 5

这里有四个模块:

  • __main__,主脚本,你给 Python 命令运行的文件。
  • config,从config.py文件加载。
  • views,从views.py文件加载。
  • app,从app.py使用时加载import app

请注意,后者与第一个是分开的!初始脚本没有被加载app,Python 认为它是不同的。您有两个Flask对象,一个引用为__main__.app,另一个引用为app.app

创建一个单独的文件作为脚本的主要入口点;说run.py

from app import app
import config

if __name__ == '__main__':
    app.run(host=config.host, port=config.port, debug=config.debug)
Run Code Online (Sandbox Code Playgroud)

import config从 中删除该行app.py以及最后两行。

或者(但更丑),from __main__ import appviews.py.