jef*_*rey 2 python flask flask-restful
以下是来自flask-restful doc的示例代码
from flask import Flask
from flask.ext import restful
app = Flask(__name__)
api = restful.Api(app)
class HelloWorld(restful.Resource):
def get(self):
return {'hello': 'world'}
api.add_resource(HelloWorld, '/')
if __name__ == '__main__':
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
这个HelloWorld类在同一个python文件中,比方说app.py,它有效.
现在我将把HelloWorld类放到一个单独的类文件中,如下面的布局:
app
app/__init__.py # hold above code except the HelloWorld class.
app/resource
app/resource/__init__.py # empty
app/resource/HelloWorld.py # hold the above HelloWorld class.
Run Code Online (Sandbox Code Playgroud)
该app/__init__.py包含:
from flask import Flask
from flask.ext import restful
from resource.HelloWorld import HelloWorld
app = Flask(__name__)
api = restful.Api(app)
api.add_resource(HelloWorld, '/')
if __name__ == '__main__':
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
而且HelloWorld.py是:
from flask.ext import restful
from app import app
class HelloWorld(restful.Resource):
def get(self):
return {'hello': 'world'}
Run Code Online (Sandbox Code Playgroud)
运行应用程序会出现异常:
ImportError: No module named app on HelloWorld.py
Run Code Online (Sandbox Code Playgroud)
我确实需要访问应用程序来阅读一些信息,例如app.config,我如何使其工作?
你有一个循环导入; 当行from resource.HelloWorld import HelloWorld执行时,app尚未分配给,所以Helloworld.py在行中from app import app失败.
要么HelloWorld稍后导入:
from flask import Flask
from flask.ext import restful
app = Flask(__name__)
api = restful.Api(app)
from resource.HelloWorld import HelloWorld
api.add_resource(HelloWorld, '/')
if __name__ == '__main__':
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
或者只导入app模块HelloWorld.py:
from flask.ext import restful
import app
class HelloWorld(restful.Resource):
def get(self):
return {'hello': 'world'}
Run Code Online (Sandbox Code Playgroud)
并app.app在稍后调用的函数或方法中引用.
| 归档时间: |
|
| 查看次数: |
2461 次 |
| 最近记录: |