2017-09-11 38 views
1

我的名字是omar。我正在研究一個使用SynapsePay API進行貨幣交易的django項目。我遇到了一個問題,我有兩個相同對象(用戶)的實例。 Django在django應用程序中創建新用戶時使用'User'對象。當在其API中創建新用戶時,Synapse使用「用戶」對象。當我嘗試使用SYnapse api時,我開始得到相同變量的衝突用法。SynapsePay與Django用戶衝突的實例

在import語句中,當我從Synapse Api導入用戶時,我將用戶的實例保存爲SynapseUser,這就是我用來與應用程序交互的東西。

有些部分的api是我無法控制的,它使用Api中的'User'對象,它抓取錯誤的對象或試圖抓取不存在於正在傳遞的鍵中的鍵。

這裏是所有的代碼,我已經和我試圖讓錯誤...

下面的代碼就是抓住形式的內容及測試用API銀行authroization ..

Here is a link to the api github samples.md file

這裏是views.py文件:

import os 
from synapse_pay_rest import Client 
from synapse_pay_rest import User as SynapseUser 
from synapse_pay_rest.models.nodes import AchUsNode 

def linkBankLogin(request, form): 
    currentUser = loggedInUser(request) 
    cd = form.cleaned_data 
    bank_name = cd['bank'] 
    username = cd['username'] 
    password = cd['password'] 

    required = { 
     'bank_name':'wellsfargo', 
     'username':'omarjandali', 
     'password':'123123asd' 
    } 

    ach_us = AchUsNode.create_via_bank_login(SynapseUser, **required) 

    ach_us.mfa_verified 

這裏是我得到的錯誤,當用戶提交林肯克帳戶形式:

AttributeError at /link_account/ 
type object 'User' has no attribute 'client' 
Request Method: POST 
Request URL: http://127.0.0.1:8000/link_account/ 
Django Version: 1.11.5 
Exception Type: AttributeError 
Exception Value:  
type object 'User' has no attribute 'client' 
Exception Location: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/synapse_pay_rest/models/nodes/ach_us_node.py in create_via_bank_login, line 39 

create_via_bank_login是API中創建的內部的方法和不是我可以改變。我怎樣才能得到它搶SynapseUser

** **更新

下面的代碼是什麼是使用id來查找用戶:

user = User.by_id(client, '...4dc1') 

這樣我就可以這樣做這樣的:

synapseUser = SynapseUser.by_id(client, '...4dc1') 

,因爲我只是在上面返回一個創建的用戶信息

工作添加的代碼0

然後代替:

ach_us = AchUsNode.create_via_bank_login(SynapseUser, **required) 

我可以使用:

ach_us = AchUsNode.create_via_bank_login(synapseUser, **required) 

**續更新**

我有下面的代碼來執行我想要的東西整合:

def searchUserSynapse(request): 
    currentUser = loggedInUser(request) 
    currentProfile = Profile.objects.get(user = currentUser) 
    synapse_id = currentProfile.synapse_id 

    user = SynapseUser.by_id(clients, str(synapse_id)) 

    response = user.json 
    print(response) 
    return user 

def linkBankLogin(request, form): 
    currentUser = loggedInUser(request) 
    cd = form.cleaned_data 
    bank_name = cd['bank'] 
    username = cd['username'] 
    password = cd['password'] 

    required = { 
     'bank_name':'wellsfargo', 
     'username':'omarjandali', 
     'password':'123123asd' 
    } 

    response = searchUserSynapse(request) 

    ach_us = AchUsNode.create_via_bank_login(response, **required) 

    ach_us.mfa_verified 

並且新的錯誤消息如下:

BadRequestError at /link_account/ 
No exception message supplied 
Request Method: POST 
Request URL: http://127.0.0.1:8000/link_account/ 
Django Version: 1.11.5 
Exception Type: BadRequestError 
Exception Location: 
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site- 
packages/synapse_pay_rest/http_client.py in parse_response, line 86 

我怎樣才能找出請求有錯誤?

+0

如果我的回答幫助你解決了你的問題,你可以放棄並接受它。 – rawbeans

回答

1

您需要傳遞類SynapseUser的實例,而不是類本身。

行:

ach_us = AchUsNode.create_via_bank_login(SynapseUser, **required) 

應該是:

ach_us = AchUsNode.create_via_bank_login(user, **required) 

其中user類型爲SynapseUser

所以,你需要獲取SynapseUser的Django的User事先:

user = SynapseUser.by_id(client, synapse_user_id) 

你需要創建一個方法來獲取synapse_user_id的Django的用戶(在這種情況下currentUser

我會建議有一個一對一的關係組建UserProfileUser在那裏你可以存儲這個和其他信息。

查看this post例如如何設置。

+0

所以它會看起來像我已經添加到更新部分中的原始帖子 –

+0

@OmarJandali是這正是你想要做的 – rawbeans

+0

現在我得到了一個不同的錯誤@rawbeans –