【发布时间】:2013-12-31 03:41:41
【问题描述】:
我正在尝试调整现有的 XMLRenderer 以创建自定义的 -
class CustomRenderer(renderers.BaseRenderer):
"""
Renderer which serializes to CustomXML.
"""
media_type = 'application/xml'
format = 'xml'
charset = 'utf-8'
def render(self, data, accepted_media_type=None, renderer_context=None):
"""
Renders *obj* into serialized XML.
"""
if data is None:
return ''
stream = StringIO()
xml = SimplerXMLGenerator(stream, self.charset)
xml.startDocument()
xml.startElement("job id='string1'", {})
self._to_xml(xml, data)
xml.endElement("job")
xml.endDocument()
return stream.getvalue()
def _to_xml(self, xml, data):
if isinstance(data, (list, tuple)):
for item in data:
xml.startElement("string2", {})
self._to_xml(xml, item)
xml.endElement("string2")
elif isinstance(data, dict):
for key, value in six.iteritems(data):
xml.startElement(key, {})
self._to_xml(xml, value)
xml.endElement(key)
elif data is None:
# Don't output any value
pass
else:
xml.characters(smart_text(data))
对于 string1,我希望它从调用它的视图中获取值。 string1 = API 中 GET 的主键。
即。如果我打电话给http://localhost/API/2345 then string1 = 2345
对于 string2,我希望它返回类似于他们在以下帖子中所做的模型名称 -
Adding root element to json response (django-rest-framework)
这是自定义渲染器返回的值,以便可以将 JSON/XML 的根值设置为模型名称。
我尝试调整 CustomRenderer 以包含这些行,但是在运行我的视图时它抱怨我的 views.py 上的“object() 没有参数” -
if request.method == 'GET':
DEV = Trgjob.objects.using('database1').filter(job_id=pk).order_by('job_order')
serializer = CustomSerializer(DEV, many=True)
return CustomRenderer(serializer.data)
【问题讨论】:
-
请更好地解释您的问题。
string1 = pkpk是什么?还要在这里描述第二个问题,而不是把我们指向另一个 url.. -
已更新以更好地解释。
标签: python django django-rest-framework