在Django视图函数中调用活塞处理器
我正在使用 Django Piston 来实现我的 RESTful API。我已经实现了一个 API,
/api/[uuid of user]
它会提供与用户的 UUID 相关的所有信息。
不过,我还想实现另一个 API,
/api/user/username
它的输出应该和之前的完全一样。
我不想维护两个输入不同但输出相同的 API。因此,我想做的是重定向 Piston 的 API 调用。在网上搜索了一下,似乎 Piston 不能做到这一点(如果我错了请纠正我),所以我想出了一个变通办法。对于第二个 API,我可以使用 Django 的视图函数来实现,如果用户名存在,就返回处理结果。如果不存在,就在视图函数中返回错误信息。我的代码如下:
def username_url_map(request, username):
try
user = UserProfile.objects.get(user = username)
except UserProfile.DoesNotExist:
return HttpResponse(simplejson.dumps({'error':'This user does not exist.' }), mimetype='application/json')
except UserProfile.MultipleObjectsReturned:
return HttpResponse(simplejson.dumps({'error':'This user does not exist.'}), mimetype='application/json')
uuid = user.uuid
results=GenericHandler.read(request, uuid)
json = simplejson.dumps(results)
return HttpResponse(json, mimetype='application/json')
但是我收到了以下错误信息:
TypeError
Exception Value: unbound method wrapper() must be called with GenericHandler instance as first argument (got WSGIRequest instance instead)
1 个回答
2
这个错误信息告诉你,GenericHander
的 read
方法是一个实例方法,而不是类方法。你需要先创建这个对象,然后才能调用这个方法。
在不知道更多关于这个类或方法的信息的情况下,这个方法 可能 可行:
handler = GenericHandler()
results = handler.read(request, uuid)
不过,创建对象的时候可能需要一些参数,这些参数应该在文档中有说明。