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 № 1Zakł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)