2016-08-02 8 views
1

Ich verwende Django-Vorlagen, um einige XML-Zeichenfolgen zu speichern. Die XML-String sieht wie folgt aus:Autoescaping-Werte von XML in Django-Vorlagen

<wfs:Transaction service="WFS" version="1.0.0" 
    xmlns:ogc="http://www.opengis.net/ogc" 
    xmlns:wfs="http://www.opengis.net/wfs"> 
    <wfs:Update typeName="geonode:{{ layer_name }}"> 
    {% autoescape off %}{{ property_element }}{% endautoescape %} 
    <ogc:Filter> 
    <ogc:FeatureId fid="{{ layer_name }}.{{ feature_id }}"/> 
    </ogc:Filter> 
</wfs:Update> 

Wie man sehen kann ich einige Variablen wie property_element passieren. Diese Variable ist eigentlich eine andere XML-Zeichenfolge, die wie folgt aussieht:

property_element_1 = """<wfs:Property> 
     <wfs:Name>{}</wfs:Name> 
     <wfs:Value>{}</wfs:Value> 
    </wfs:Property>\n""".format(attribute, value) 

Und das ist, wie ich die Attribute meiner Vorlage machen:

xmlstr = get_template(xml_path).render(Context({ 
     'layer_name': layer_name, 
     'coords': coords, 
     'property_element': property_element})).strip() 

Das Problem ist, dass der Teil der xmlstr, das entspricht zu

 property_element_1 

wird nicht autoescaped. So bekomme ich Werte wie: <und>

Wie kann ich sie autoscape?

Antwort

1

Ist dies Ihr exakter Code? Fragen, weil Sie ein Eigenschaftenelement rendern, aber noch keins definiert haben.

Wie dem auch sei, der Grund, dass die eckigen Klammern sind nicht entgangen ist, weil:

{% autoescape off %}{{ property_element }}{% endautoescape %} 

Sie es ausgeschaltet haben