我有一些代码:
from forms import MyForm
app = Flask(__name__)
app.config.from_pyfile('config.py')
@app.route('/', methods=('GET', 'POST'))
def index():
form = MyForm()
if form.validate_on_submit():
print('Form submited')
return render_template('index.html', form=form)
if __name__ == '__main__':
app.run(debug=True)
from flask import current_app
from flask_wtf import Form
from flask_wtf.file import FileField, FileAllowed
class MyForm(Form):
image = FileField('Image',
[FileAllowed(current_app.config['ALLOWED_EXTENSIONS'],
'Wrong extension.')])
但是我收到了下一个错误RuntimeError: working outside of application context
我使用循环导入语句或在代码中间使用import语句(或只是导入config.py = D)获得一些工作变体但是如何在 pythonic Flask方式中修复它?
答案 0 :(得分:0)
由于image
是一个类属性,因此当您执行from forms import MyForm
时会运行它。此操作失败,因为current_app
是proxy,仅在应用运行后才有效。
正确的做法是将import语句移到index()
内。这可以保证它只在请求期间运行,这可以保证应用程序处于活动状态。