首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何操作django-piston中的响应对象?

如何操作django-piston中的响应对象?
EN

Stack Overflow用户
提问于 2010-09-09 09:47:23
回答 3查看 2.2K关注 0票数 3

我有一些现有的python代码,它使用django-piston返回一个字典作为响应。例如:

代码语言:javascript
复制
from piston.handler import BaseHandler

class FooHandler(BaseHandler):
    allowed_methods = ('GET',)

    @classmethod
    def create(self, request):
        return { 'foo': 'bar' }

这段代码可以很好地工作,并使用适当的HTTP标头集序列化为JSON (我假设这是通过涉及发射器的一些活塞魔术来工作的;要获得额外的好处,请随时解释这个行为是如何工作的,因为我还在学习django- piston )。

我需要能够以任意的方式修改响应,例如设置报头、状态代码等,而不使用为特定目的设计的预烘焙解决方案。有没有一种方便的方法来访问此代码上下文中的响应对象并对其进行操作,或者响应对象尚未创建?为了访问响应对象,我是否必须手动构造它(就像香草django一样),序列化字典,并手动设置适当的头文件,从而失去django-piston的一些有用的魔力?

EN

回答 3

Stack Overflow用户

发布于 2011-02-10 15:59:28

每个django-piston方法都返回一个HTTPResponse。

当你返回字典时,django-piston只是将其序列化,并将其粘贴到它精心制作的HTTPResponse中。

令人惊讶的是,维基中所有django-piston示例中的"return rc.CREATED“行都只是带有HTTP代码和响应体的过于简单的响应。

看看这里:https://bitbucket.org/jespern/django-piston/src/c4b2d21db51a/piston/utils.py

在rc_factory类中,它创建了各种简单的HTTPResponse对象以用于Piston。

至少你可以观察他们是如何做到这一点的,然后制作你自己的。

但是你的问题“我能做一个自定义的HTTPResponse吗?”的答案是肯定的,你可以。当然,这就是web服务器所做的事情。

票数 1
EN

Stack Overflow用户

发布于 2011-07-22 02:04:56

可以通过从处理程序方法返回HttpResponse对象来设置自定义响应代码。

代码语言:javascript
复制
return HttpResponse({'foo': 'bar'}, status=404)

不幸的是,你不能用同样的方式设置头文件。为此,您必须编写一个自定义发射器来设置所需的标头。一些类似的方法可能会起作用:

代码语言:javascript
复制
class CustomEmitter(JSONEmitter):
    def render(self, request):
        content = super(CustomEmitter, self).render(request)
        response = HttpResponse(content)
        response['Cache-Control'] = 'max-age=60'

Emitter.register('json', CustomEmitter, 'application/json; charset=utf-8')
票数 1
EN

Stack Overflow用户

发布于 2011-02-10 16:54:37

您说得很对,django-piston使用发射器来序列化/反序列化请求和响应。您甚至可以注册自己的发射器与活塞,并让它使用这些。

有几种方法可以确定格式应该是什么。

代码语言:javascript
复制
1. mime-type
2. <format> in your URL
3. .json at the end of your URL

您想要操作哪些特定的标头?可能会有其他的解决方案,而不只是修改response对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3673240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档