我正在使用django活塞来实现我的RESTful API。我已经实现了一个
的api/api/[uuid of user]
将提供与用户uuid相关的所有信息。
但是,我也想实现另一个api
/api/user/username
其中输出应与前一个输出完全相同。
我不想用不同的输入维护两个api但输入相同。因此,我想要做的是重定向活塞api调用。在互联网上搜索之后,似乎活塞无法做到(如果我错了就纠正我),所以我走出了一个解决方法。对于第二个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)
答案 0 :(得分:2)
错误消息告诉您read
GenericHander
方法是实例方法,而不是classmethod。在调用方法之前,您需要实例化对象。
在不知道有关类或方法的任何内容的情况下,可能工作:
handler = GenericHandler()
results = handler.read(request, uuid)
但是实例化调用可能需要一些参数,这些参数应该记录下来。