/ / Dostęp do zmiennych globalnych jinja2 w szablonie - python, flask, jinja2

Wejdź do globalnych zmiennych jinja2 w szablonie - python, flask, jinja2

Mam aplikację Flask, którą buduję i mam problemy z dostępem do moich zmiennych globalnych jinja2 z moich szablonów, jakikolwiek pomysł, co robię źle tutaj?

__init__.py

from config import *

...

#Initialize Flask App
app = Flask(__name__)

#Jinja2 global variables
jinja_environ = app.create_jinja_environment()
jinja_environ.globals["DANISH_LOGO_FILE"] = DANISH_LOGO_FILE
jinja_environ.globals["TEMPLATE_MEDIA_FOLDER"] = TEMPLATE_MEDIA_FOLDER

...

config.py

...

TEMPLATE_MEDIA_FOLDER = "../static/img/media_library/" #This is the location of the media_library relative to the templates directory
DANISH_LOGO_FILE = "100danish_logo.png"

...

przykładowy szablon

<p>{{ TEMPLATE_MEDIA_FOLDER }}</p>

W tym przypadku TEMPLATE_MEDIA_FOLDER nie drukuje niczego do szablonu.

Odpowiedzi:

4 dla odpowiedzi № 1

Zakładam, że używasz Flask render_template funkcja tutaj domyślnie połączona z aplikacją jinja_env atrybut.

Więc spróbuj czegoś takiego,

app = Flask(__name__)
app.jinja_env.globals["DANISH_LOGO_FILE"] = DANISH_LOGO_FILE
app.jinja_env.globals["TEMPLATE_MEDIA_FOLDER"] = TEMPLATE_MEDIA_FOLDER

0 dla odpowiedzi nr 2

Odpowiedź przyjęta odpowiedź działa, ale to był błąd pylinta "[pylint] E1101: Metoda" jinja_env "nie ma członka" globals ""

Zrób to w ten sposób, aby uniknąć błędu:

app = Flask(__name__)
app.add_template_global(name="DANISH_LOGO_FILE", f=DANISH_LOGO_FILE)