2017-11-01 6 views
0

Ich erstelle eine modulare Kolben-Anwendung, die Blaupausen aus Eizellen lädt, aber diese Blueprints müssen Vorlagen aus diesen Paketen rendern.flaschen laden Vorlagen aus einem Ei-Paket

Dies ist, wie mein Projekt wie folgt aussieht:

some folders/ 
templates/ #the base folders 
static/ 
blueprints/ 
    |- blueprint1.egg 
    | |- templates/ #inside the .egg 
    | |- some other folders/ 
    | |- main.py 
    |- blueprint2.egg 
    |- templates/ 
    |- some other folders/ 
    |- main.py 
my_flask_main.py 

Jetzt kann ich correcly Entwürfe von jenem .egg importieren und registrieren, aber wie kann ich lade diese Vorlagen aus den .egg Extrahieren sie on-the-fly, oder besser lesen Sie diese direkt aus dem .egg?

(Obv in dev-Modus, wenn die Pläne nicht verpackt werden, es funktioniert, ich brauche eine Möglichkeit, sie auch zu laden, wenn die Pläne verpackt sind)

Vielen Dank im Voraus.

Antwort

0

Nach einigen Recherchen und Tests, nach einigen Tagen fand ich endlich einen Weg, das zu tun:

bp_dummy = Blueprint('dummy', __name__, template_folder='templates') 

bp_dummy.jinja_loader = jinja2.ChoiceLoader([ 
    bp_dummy.jinja_loader, 
    jinja2.PackageLoader(__name__) # in the same folder will search the 'templates' folder 
]) 

Zuerst in jedem Plan Instanz müssen Sie den Vorlagenordner Pfad definieren und die Standard jinja2 Vorlagenordner überschreiben (Standardmäßig sollte es sich um einen FileSystemLoader handeln). Wenn das Modul gepackt wird, schlägt der Standardlader fehl und der PackageLoader funktioniert.

Verwandte Themen