2015-05-21 4 views

Antwort

79

Sie haben einige Optionen.

1) Ändern Sie die Trennzeichen-Notation für Angular:

var app = angular.module('Application', []); 

app.config(['$interpolateProvider', function($interpolateProvider) { 
    $interpolateProvider.startSymbol('{a'); 
    $interpolateProvider.endSymbol('a}'); 
}]); 

Was auch immer für die Start- und End-Symbole gewählt werden als die neuen Trennzeichen handeln. In diesem Fall würden Sie eine Variable mit {a some_variable a} an Angular ausgeben.

Dieser Ansatz hat den Vorteil, dass er nur einmal gesetzt und explizit sein muss.

2) Ändern Sie die Trennzeichenschreibweise für Jinja2.

außer Kraft setzen oder Unterklasse Flask.jinja_options.update auf das Flask Objekt, das Sie an Ihre Anwendung binden (relevant Vars: block_start_string, block_end_string, variable_start_string, variable_end_string, comment_start_string, comment_end_string):

jinja_options = app.jinja_options.copy() 

jinja_options.update(dict(
    block_start_string='<%', 
    block_end_string='%>', 
    variable_start_string='%%', 
    variable_end_string='%%', 
    comment_start_string='<#', 
    comment_end_string='#>' 
)) 
app.jinja_options = jinja_options 

Da es ein höheres Risiko von sensiblen Daten ist Da ich von der Serverseite her unausgedehnt bin, empfehle ich stattdessen, die Syntax am Frontend (dh Angular) in jedem Projekt zu ändern, in dem Sie nicht der einzige Entwickler sind.

3) Ausgang a raw block in Jinja2 {% raw %} oder {% verbatim %} Verwendung:

<ul> 
{% raw %} 
    {% for item in seq %} 
     <li>{{ some_var }}</li> 
    {% endfor %} 
{% endraw %} 
</ul> 

4) Verwenden Jinja2 die geschweiften Klammern in der Vorlage zu schreiben:

{{ '{{ some_var }}' }} 

dieser Ausgang als {{ some_var }} wird in das HTML.

Meine Präferenz für Ansatz # 1 ist offensichtlich, aber einer der oben genannten funktioniert.

1

Es gibt auch eine andere Option: flash-triangle ist eine Erweiterung, die Ihnen hilft, Formen zu erstellen, während Sie winklige Vorlagen in jinja2 integrieren. Anstelle des eckigen Klammernbegrenzers (oder jinja2) können Sie einfach einen Bezeichner hinzufügen, um jinja2 mitzuteilen, ob der Ausdruck als eckiger dargestellt werden soll. Nur |angular nach dem Variable hinzu:

<div>{{variable|angular}}</div> 

, die in der HTML-Ausgabe als gerendert werden:

<div>{{variable}}</div> 

Bitte beachten Sie, dass Kolben-Dreieck auch mit anderen Merkmalen kommt (für Gebäudeformen in Winkel Stil), aber ich denke, es könnte eine wertvolle Option sein, um winkelförmige Templating in Jinja2 lesbarer zu machen.

Verwandte Themen