2016-08-02 13 views
1

我使用Django模板來存儲一些XML字符串。 XML字符串看起來是這樣的:從Django模板中的xml自動轉義值

<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> 

正如你可以看到我通過一些變量,如property_element。 這個變量實際上是另一種XML字符串,看起來像這樣:

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

這就是我的呈現方式的屬性,以我的模板:

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

的問題是,xmlstr的部分,其對應到

 property_element_1 

不會自動轉義。所以我得到的值如下:<和>

我該如何autoescape它們?

回答

1

這是您的確切代碼?詢問是因爲你正在渲染一個屬性元素,但你還沒有定義它。

反正就是尖括號不會被轉義的原因是因爲:

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

你已經關掉它關閉