最近我想通过Django视图返回一个动态生成的XML树。我用于XML操作的模块是通常的cElementTree。在
我想我通过以下几点来解决我想要的问题:
def view1(request):
resp = HttpResponse(g())
return resp
def g():
root = Element("ist")
list_stamp = SubElement(root, "list_timestamp")
list_creation = str(datetime.now())
for i in range(1,1000000):
root.text = str(i)
yield cET.tostring(root)
这样做是个好主意吗?我错过什么了吗?在
是的,在HttpResponse中返回迭代器是完全合法的。正如您所发现的,这允许您将内容流式传输到客户端。在
有用吗?如果它不工作,它会抛出什么错误?在
如果您正在为django站点构建一个完整的API,请看一下django活塞。它处理了很多与此相关的繁杂工作。在
http://bitbucket.org/jespern/django-piston/wiki/Home
关于中间件“打破”流媒体:
如果您在设置中设置} decorator 更好的方法来完成条件get。使用它,你的流媒体就可以流了:-)
USE_ETAGS = True
,那么CommonMiddleware将尝试使用整个迭代器。但是在现代Django(1.1)中,有一种比CommonMiddleware+ConditionalGetMiddleware--^{另一个尝试使用迭代器的东西是GzipMiddleware。如果您想使用它,可以通过将流式响应转换为decorator并应用于单个视图而不是全局视图来避免gzip压缩流式响应。在
相关问题 更多 >
编程相关推荐