Как использовать поршень Django для возврата ответа в текстовом / простом виде? - PullRequest
1 голос
/ 21 января 2011

Я не хочу ничего сериализовать.Я просто хочу вернуть то, что эквивалентно HttpResponse(blah)

Ответы [ 3 ]

2 голосов
/ 22 января 2011

Звучит так, будто вам нужен строковый эмиттер, а не один из встроенных 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',))

Вы бы получили ваш ресурс для использования этого эмиттера в ваших URL.Пы вроде так:

urlpatterns = patterns('',
   url(r'^blogposts$', resource_here, { 'emitter_format': 'text' }),
)
0 голосов
/ 07 мая 2013

по вашему мнению:

class HttpResponsePlain(django.http.HttpResponse):

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

return HttpResponsePlain(content = 'That is plain text response!')
0 голосов
/ 18 августа 2011

Чтобы добавить ответ пользователя 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)
...