Колба, blue_print, current_app - PullRequest
       5

Колба, blue_print, current_app

7 голосов
/ 30 марта 2012

Я пытаюсь добавить в среду jinja функцию из синего шрифта (функцию, которую я буду использовать в шаблоне).

Main.py

app = Flask(__name__)
app.register_blueprint(heysyni)

MyBluePrint.py

heysyni = Blueprint('heysyni', __name__)
@heysyni.route('/heysyni'):
    return render_template('heysyni.html',heysini=res_heysini)

Теперь в MyBluePrint.py я бы хотел добавить что-то вроде:

def role_function():
    return 'admin'
app.jinja_env.globals.update(role_function=role_function)

Затем я смогу использовать эту функцию в моем шаблоне. Я не могу понять, как я могу получить доступ к приложению, так как

app = current_app._get_current_object()

вернуть ошибку

working outside of request context

Как мне реализовать такой шаблон?

1 Ответ

9 голосов
/ 02 апреля 2012

Ошибка сообщения была на самом деле довольно ясна:

работа вне контекста запроса

В моем проекте я пытался получитьприложение вне функции 'request':

heysyni = Blueprint('heysyni', __name__)

app = current_app._get_current_object()
print app

@heysyni.route('/heysyni/')
def aheysyni():
    return 'hello'

Я просто добавляю, чтобы переместить оператор current_app в функцию.Наконец, это работает следующим образом:

Main.py

from flask import Flask
from Ablueprint import heysyni

app = Flask(__name__)
app.register_blueprint(heysyni)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run(debug=True)

Ablueprint.py

from flask import Blueprint, current_app

heysyni = Blueprint('heysyni', __name__)

@heysyni.route('/heysyni/')
def aheysyni():
    #Got my app here
    app = current_app._get_current_object()
    return 'hello'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...