如何使用Django活塞在text / plain中返回响应?

时间:2011-01-21 04:42:26

标签: python django rest http django-piston

我想不要序列化任何东西。我只想返回相当于HttpResponse(blah)

的内容

3 个答案:

答案 0 :(得分:2)

听起来你想要一个字符串发射器,而不是内置的JSONEmitter,XMLEmitter等。

查看发射器的文档:https://bitbucket.org/jespern/django-piston/wiki/Documentation

这里现有的发射器定义: https://bitbucket.org/jespern/django-piston/src/c4b2d21db51a/piston/emitters.py

纯文本发射器的定义可能如下所示:

from piston.emitters import Emitter
from piston.utils import Mimer    

class TextEmitter(Emitter):
    def render(self, request):
        return self.construct()
Emitter.register('text', TextEmitter)
Mimer.register('text', None, ('text/plain',))

您可以在urls.py中使用此发射器,如下所示:

urlpatterns = patterns('',
   url(r'^blogposts$', resource_here, { 'emitter_format': 'text' }),
)

答案 1 :(得分:0)

要添加到user85461的答案,当您制作文本发射器时,您还需要制作文本Mimer。我用Piston 0.2.2

编写了以下代码
from piston.emitters import Emitter
from piston.utils import Mimer

class TextEmitter(Emitter):
    def render(self, request):
        return self.construct()
Emitter.register('text', TextEmitter, ('text/plain',))
Mimer.register(lambda x: QueryDict(x), ('text/plain',))

将此代码段添加到将在处理程序之前运行的某个位置。我把它放在我用我的urls.py

创建的API Resources上面
resource_handler = Resource(handler=SomeHandler)

答案 2 :(得分:0)

在您看来

class HttpResponsePlain(django.http.HttpResponse):

    def serialize(self):            return self.content
    def serialize_headers(self):    return ''

return HttpResponsePlain(content = 'That is plain text response!')