繁体   English   中英

如何使用 Django 活塞以文本/纯文本形式返回响应?

[英]How do I use Django piston to return a response in text/plain?

我不想序列化任何东西。 我只想返回等同于HttpResponse(blah)的内容

听起来您想要一个字符串发射器,而不是内置的 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' }),
)

我从Django 文档中找到的最简单的方法:

HttpResponse("Text only, please.", content_type="text/plain")

在你看来:

class HttpResponsePlain(django.http.HttpResponse):

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

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

要添加到 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',))

将此代码段添加到将在您的处理程序之前运行的某个位置。 我把它放在上面的 API urls.py中,我在其中创建了我的Resources

resource_handler = Resource(handler=SomeHandler)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM