Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种优雅的方法可以将{%if..%}应用于Django中的所有标记?_Python_Xml_Django_Django Templates - Fatal编程技术网

Python 有没有一种优雅的方法可以将{%if..%}应用于Django中的所有标记?

Python 有没有一种优雅的方法可以将{%if..%}应用于Django中的所有标记?,python,xml,django,django-templates,Python,Xml,Django,Django Templates,我正在使用django创建一个XML文档,查看XSD模式,可能需要也可能不需要很多标记 像这样: <GenericCustomerPaymentDetails> <PayPalID>{{purchase.customer.ppid}}</PayPalID> <BankAccountNumber>{{purchase.customer.ban}}</BankAccountNumber> <SortCode&g

我正在使用django创建一个XML文档,查看XSD模式,可能需要也可能不需要很多标记

像这样:

<GenericCustomerPaymentDetails>
    <PayPalID>{{purchase.customer.ppid}}</PayPalID>
    <BankAccountNumber>{{purchase.customer.ban}}</BankAccountNumber>
    <SortCode>{{purchase.customer.sc}}</SortCode>
    <CreditCardNumber>{{purchase.customer.ccn}}</CreditCardNumber>
    <BitCoinAddress>{{purchase.customer.bitcoin}}</BitCoinAddress>
</GenericCustomerPaymentDetails>
如果有更优雅的方法可以做到这一点?是否有方法对值和标记大容量应用if exists?(如果解决方案能够容纳STAG[自动关闭标签],则可获得额外积分)

我能想到的唯一方法是将这些支付方法放入json上的对象列表中,如下所示

purchase.customer:[
    {tag_name:"PayPalID",tag_content:"pay.me.monies@geemail.com"},
    {tag_name:"BitCointAddress",tag_content:"http://blockexplorer.com/address/1PC9aZC4hNX2rmmrt7uHTfYAS3hRbph4UN"},
]

然后绕着它们转一圈。但这需要额外的数据操作才能转换成这种格式,我不希望这样做(如果看起来是可行的,但如果您已经有这样的数据)。

您可以编写一个自定义过滤器,检查值是否存在,并使用正确的XML标记对其进行包装。例如:

def default_xml_tag(value, arg):
    if value:
        return "<{0}>{1}</{0}>".format(arg, value)
    else:
        return ""
在模板中


有关如何注册过滤器的详细信息,请参阅(非常好)。

这或多或少就是我刚刚写的内容!谢谢你指出这是多么简单。唯一不同的是我用的是。
def default_xml_tag(value, arg):
    if value:
        return "<{0}>{1}</{0}>".format(arg, value)
    else:
        return ""
{{purchase.customer.ppid | default_xml_tag:"PayPalID" }}