2

我一直在从本教程http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world学习烧瓶/python

这个博客很好,解释得很好。在第一个教程中,如果您注意到,他要求我们创建一个init .py 文件、一个 views.py 文件和一个 main run.py 文件。

root
/microblog
  /apps
    /__init__.py
    views.py

我创建了这两个文件。他要求我们创建一个 run.py 文件并将其放在根文件中。然后

chmod a+x run.py
./run.py

它说该文件不存在。如果我,

python run.py

它说 App 模块未定义。我无法弄清楚问题所在,我将 run.py 文件放在所有文件中,但它从来没有工作过。

我还将包含代码,以便更容易回答而不是转到上面的链接

初始化.py

from flask import Flask
app = Flask(__name__)
from app import views

视图.py

from app import app
@app.route('/')
@app.route('/index')
def index():
  return 'Hello world'

运行.py

#!flask/bin/python
from app import app
app.run(debug = True)

我的问题:

  1. 我应该把 run.py 文件放在哪里?

  2. 为什么我们要创建不同的文件?为什么不能全部放在一个完整的文件中?

    init.py -->

    • 他正在进口烧瓶,这是正常的。然后分配 app = ( name )。这是为什么?那他为什么要从应用程序中导入视图?

视图.py -->

  1. 从应用程序导入应用程序?app 是这里现有的模块还是我们刚刚创建的模块?做什么@app.route('/')
    @app.route('/index')做什么?

有人可以将代码放在一起并解释一下吗?

4

1 回答 1

2

它说 App 模块未定义

您拼错了包名称:您的目录树中有应用程序,您尝试导入应用程序

我应该把 run.py 文件放在哪里?

只要应用程序位于 PYTHONPATH 中,您想要的任何地方。或者你可以把它放在微博目录中。

他正在进口烧瓶,这是正常的。然后分配 app = (name). 这是为什么?

# Create reference to flask WSGI application object
app = Flask(__name__)

为什么?因为您需要应用程序才能运行。参见官方文档:Flask 对象

那他为什么要从应用程序中导入视图?

from app import views

表示:从名为 app 的包导入名为 views 的模块

命名约定可能会有所不同,但如果您没有看到差异,您可能应该花更多的时间学习 Python 基础知识,然后再开始使用更复杂的东西。

从应用程序导入应用程序?app 是这里现有的模块还是我们刚刚创建的模块?> @app.route('/') 或 @app.route('/index') 做什么?

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

简短回答:如果应用程序收到对 url '/' 的请求,则使用函数 foo 进行响应有关更多信息,请参阅官方文档:add_url_ruleURL Route Registrations

更新

为什么我们要创建不同的文件?为什么不能全部放在一个完整的文件中?

实际上,没有什么能阻止您将所有内容放在一个文件中,但大多数时候这确实是个坏主意。如果您在这个特定示例中询问推理,则主要是关于分离具有不同职责的模块。

于 2013-09-08T13:40:58.383 回答