Как вызвать некоторую функцию из приложения Flask в Python?

Я myapp.py такой:

from flask import Flask
from flask import request
from flask import render_template
app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
         # do something
         # for example:
         message = 'I am from the POST method'
         f = open('somefile.out', 'w')
         print(message, f)

    return render_template('test.html', out='Hello World!')

if __name__ == '__main__':
    app.run()

у меня простой вопрос. как позвонить

2 ответов


посмотреть Контекста Запроса документация; вам нужно создать контекст явно:

>>> ctx = myapp.app.test_request_context('/', method='POST')
>>> ctx.push()
>>> myapp.index()

вы также можете использовать контекст в качестве менеджера контекста (см. Другие Трюки Тестирования):

>>> with myapp.app.test_request_context('/', method='POST'):
...     myapp.index()
...

ошибка вызвана доступом к на . Вы могли бы позвонить index() без каких-либо проблем, если вы пытаетесь получить доступ к request атрибуты внутри него.

на request прокси работает только в пределах контекста запроса.

вы можете прочитать больше об этом здесь: http://flask.pocoo.org/docs/reqcontext/

>>> request.method
(...)
>>> RuntimeError: working outside of request context

вы можете создать контекст запроса следующим образом:

>>> with app.test_request_context('/'):
...     request.method
... 
'GET'