【发布时间】:2011-04-10 01:12:12
【问题描述】:
我有一些使用 django-piston 的现有 python 代码,它返回一个字典作为它的响应。例如:
from piston.handler import BaseHandler
class FooHandler(BaseHandler):
allowed_methods = ('GET',)
@classmethod
def create(self, request):
return { 'foo': 'bar' }
此代码工作正常,并使用适当的 HTTP 标头集序列化为 JSON(我假设这通过一些涉及发射器的活塞魔术工作;对于奖励积分,请随时澄清此行为如何工作,因为我我还在了解 django-piston)。
我需要能够以任意方式修改响应,例如设置标题、状态代码等,而不使用为特定目的设计的一些预烘焙解决方案。是否有一种方便的方法可以在此代码的上下文中访问响应对象并对其进行操作,或者尚未创建响应对象?为了访问响应对象,我是否必须手动构建它(a la vanilla django),序列化字典,并手动设置适当的标题,从而失去了 django-piston 的一些有用魔力?
【问题讨论】:
-
'create' 不应该是类方法
-
根据 Piston Wiki:“注意:这些“资源方法”应该使用 @classmethod 装饰器进行装饰,因为它们不会总是收到自身的实例。例如,如果您定义了 UserHandler ,并且您从另一个处理程序返回一个用户,您将不会收到该处理程序的实例,而是 UserHandler。"
标签: django django-piston