我正在尝试编写服务器来管理一些数据并提供网页。我想使用Flask,Python网络框架。
我可以轻松地设置一个“静态” Flask应用程序,该应用程序为固定数据页面提供服务,例如
from flask import Flask, render_template
DATA = [1, 2, 3]
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
@app.route('/')
def index():
return render_template('mytemplate.html', data=DATA)
if __name__ == '__main__':
app.run()
Run Code Online (Sandbox Code Playgroud)
但是我想要的是一个带有服务器的“动态”应用程序,该服务器可以管理不断变化的数据。我希望服务器在打开页面时提供最新数据。因此,我想执行以下操作:
from flask import Flask, render_template
app = Flask(__name__)
class Server():
def __init__(self, data):
self.data = data
###
### Other long-running methods which might update self.data
###
@app.route('/') # <--- causes an error
def index(self):
return render_template('mytemplate.html', data=self.data)
if __name__ == '__main__':
s = Server([1, 2, 3])
### Spawn long-running methods
app.run()
Run Code Online (Sandbox Code Playgroud)
但是,这样做会引发错误:
TypeError: index() takes exactly 1 argument (0 given)
Run Code Online (Sandbox Code Playgroud)
我已经看到,在实例化服务器后,可以通过以下方法将我的方法包装在类定义之外的Flask路由中来实现所需的目标:
if __name__ == '__main__':
s = Server([1, 2, 3])
### Spawn long-running methods that might update s.data
app.route('/')(s.index)
app.run()
Run Code Online (Sandbox Code Playgroud)
但这似乎异常混乱!如果将路由附加到我想用来提供页面的实际方法上,将会更加清晰和逻辑化。
所以我的问题是:是否可以将Flask路由直接添加到类中的方法?
提前谢谢了
| 归档时间: |
|
| 查看次数: |
2818 次 |
| 最近记录: |