【问题标题】:parse template tag to XML in Django在 Django 中将模板标签解析为 XML
【发布时间】:2014-07-01 08:43:32
【问题描述】:

我正在尝试打印从数据库中获取一些值并动态打印到 xml。

这是我的模型:

class Somemodel(models.Model):
    Party_Id = models.CharField(max_length=500)
    Label = models.CharField(max_length=500)
    Party_Id = models.CharField(max_length=500)
    Name = models.CharField(max_length=500)

这是我的视图函数

def xmlcontent(request):
  obj = Somemodel.objects.get(pk=1)
  obj.Party_Id = obj.pk
  pprint.pprint(obj.DDEX_Party_Id)
  return render(request, "content.xml", {"DDID": "obj"},
content_type =   "application/xhtml+xml")

我的 content.xml 看起来像这样

<?xml version="1.0" encoding="UTF-8"?><br/>
<</MessageHeader>MessageHeader><br/>
    {% for i in DDID %}<br/>
        {{ i.pk }}<br/>
    {% endfor %} <br/>
<</MessageHeader>/MessageHeader><br/>

它假设打印 Party_id 但不打印.. 我错过了什么吗?

【问题讨论】:

    标签: python django django-templates django-database


    【解决方案1】:

    几个问题:

    1. 您发送的是字符串"obj",而不是上下文字典中的对象obj
    2. 在您的 xml 模板中,您有一个循环,但上下文变量 DDID 将是单个对象,而不是集合或查询集,因为您使用的是 .get
    3. 您的 XML 中有额外的 &lt;,并且 XML 不包含 &lt;br /&gt; 标记。生成的文件将无效。

    为了省点麻烦,只需使用内置的serializers。第一个示例向您展示了如何导出 XML:

    from django.core import serializers
    
    def some_method(request):
        XMLSerializer = serializers.get_serializer("xml")
        xml_serializer = XMLSerializer()
        xml_serializer.serialize(SomeModel.objects.filter(pk=1).values('id'), stream=request)
    

    【讨论】:

    • 仅出于意图,我给出了
      标签。我改成 obj 什么也没给。您提到了我尝试过的序列化程序,但使用它我可以将所有数据库转换为 xml 格式。但我需要从 db 中获取特定值才能打印。我没有太多的经验可以使用序列化程序来获得我需要的这一点
    【解决方案2】:

    用这条线

    return render(request, "content.xml", {"DDID": "obj"},
    

    您将字符串 "obj" 传递给模板,而不是 obj 对象。更新为

    return render(request, "content.xml", {"DDID": obj},
    

    另外obj不是列表而是单个对象,所以不能使用{%for i in DDID %} ...

    【讨论】:

    • 我变成了 {{ pk }} 。那没有给我任何输出
    • @rajasimon 你需要做{{DDID.pk}}
    • Changed inot {{ DDID }} 给出值 1 但我知道这是不正确的。然后我将此行更改为 obj = Somemodel.objects.get(Party_Id).. Gives exceptn 'too many values to unpack'
    • pprint.pprint(obj) 给出了这个输出 ([{'Party_Id': u'112'}],) 但我需要那个值进入 xml ...?
    猜你喜欢
    • 2013-03-31
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 2015-04-18
    • 2016-02-12
    • 2014-05-23
    相关资源
    最近更新 更多