2012-01-03 87 views
1

我正在使用django活塞來實現我的RESTful API。我已經實現了一個api,它是在django視圖函數中調用活塞處理程序

/api/[uuid of user] 

會給出與uuid用戶有關的所有信息。

不過,我也想實現另一個API

/api/user/username 

在輸出應該完全一樣,前一個。

我不想維護兩個不同的輸入,但具有相同的輸入。因此,我想要做的是重定向活塞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) 

回答

2

該錯誤消息告訴你的GenericHanderread方法是一個實例方法,而不是一類方法。在調用方法之前,您需要實例化對象。

不知道任何有關類或方法,這威力工作:

handler = GenericHandler() 
results = handler.read(request, uuid) 

但實例調用可能需要一些參數,應記錄在案。

相關問題