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

标签 python python-2.7 module flask

我无法使用一个创建 Flask 应用程序对象并运行它的模块,以及一个实现 View (路由和错误处理程序)的模块。这些模块包含在 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)

views.py

from app import app

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

config.py

host = 'localhost'
port = 8080
debug = True

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

最佳答案

这里有四个模块:

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

请注意,后者与第一个分开!初始脚本未作为 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)

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

或者(但更加丑陋),在 views.py 中使用 from __main__ import app

关于python - Flask 应用程序不使用另一个模块中定义的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26688234/

相关文章:

python-2.7 - Python Dask-2个DataFrame的垂直串联

linux - 在 Linux 内核中使用 __exit token

python - 如何编写一致的有状态上下文管理器?

python - 从光谱响应中查找色温

python mutagen,mp4文件,如何使用 ‘rtng’ - 内容分级标签?

vue.js - Vue 找不到模块图片位置

python - 如何从本地目录导入模块而不是 pip 安装的库?

python - 如何在 Pandas 中查找模式?

algorithm - 从 python 中的序列列表中提取特定对象

python - 使用 lxml 从 xml 文件获取值