我需要编写模型数据(CharField
仅 s)到 XML 文件以包含 flash 文件的数据。我对此很陌生,并且我对在 django 中执行此操作的过程有点不清楚。我正在创建一个 xml 文件,然后将文本数据写入该文件(与 csv 模块所做的一样,但写入 xml)。应该会生成一个非常简化的 xml 文件供 flash 文件读取,即:
<?xml version="1.0" encoding="UTF-8"?>
<textFields>
<textField id="0" text="HELLO WORLD" />
<textField id="1" text="HELLO EARTH" />
...
</textFields>
1.我使用序列化器从模型写入 xml 数据:
from django.core import serializers
data = serializers.serialize('xml', myModel.objects.filter(instanceIwantTowrite), fields=('fieldName'))
2.然后我使用创建文件core.files
:
from django.core.files import File
f = open('/path/to/new/dir/content.xml', 'w')
myfile = File(f)
3.写入文件数据并关闭:
myfile.write(data)
myfile.close()
到目前为止,尽管 xml 输出包含对象“django-objects”等的字段,但我必须看看是否可以在 ActionScript 中轻松地为 flash 文件解释它。我更喜欢像在 csv 模块中一样手动定义 xml 字段名称。由于我是 django 和 python 的新手,我想知道是否有更简单的方法来做到这一点?
Note:在序列化器中,我对模型对象使用过滤器,因为使用get
对于模型实例返回一个object not iterable
错误。事实上,我过滤它两次以获得一个实例,似乎必须有更好的方法。
这里有两种可能的解决方案:
1.
您可以扩展基本 django xml 序列化器(django.core.serializers.xml_serializer.Serializer
)并修改它,以便它将返回结构中的数据。然后你可以运行 ex.
YourSerializer('xml', myModel.objects.filter(instanceIwantTowrite), fields=('fieldName'))
它会在你的结构中输出数据。
2.
编写简单的函数,使用您的数据结构呈现模板并以您的格式返回 xml 数据:
Python代码
from django.template.loader import render_to_string
def my_serialize(query_set):
xml = render_to_string('xml_template.xml', {'query_set': query_set})
return xml
模板 xml_template.xml
<?xml version="1.0" encoding="UTF-8"?>
<textFields>
{% for object in query_set %}
<textField id="{{ object.pk }}" text="{{ object.my_field }}" />
{% endfor %}
</textFields>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)