SynapsePay 和 Django 冲突的用户实例实例

SynapsePay & Django conflicting instances of User issue

我叫奥马尔。我正在开发一个使用 SynapsePay api 进行货币交易的 django 项目。我遇到一个问题,我有两个相同对象(用户)的实例。当在 Django 应用程序中创建新用户时,Django 使用 'User' 对象。当在 api 中创建新用户时,Synapse 使用 'User' 对象。当我尝试使用 SYnapse api 时,我开始对同一变量的使用产生冲突。

在导入语句中,当我从 Synapse Api 导入用户时,我将用户实例保存为 SynapseUser,这就是我用来与应用程序交互的内容。

api 中有一些我无法控制的部分使用了 Api 中的 'User' 对象,并且正在抓取错误的对象或试图抓取一个键在传递的密钥中不存在。

这是我所有的代码和我试图得到的错误...

下面的代码是获取表单内容并使用api测试银行授权..

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')

因为我刚刚在上面添加的代码可以返回创建的用户信息

然后代替:

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

我如何找出请求出错的地方?

您需要传递 class SynapseUser 的实例,而不是 class 本身。

行:

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

应该是:

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

其中 user 的类型为 SynapseUser

所以你需要预先获取 django UserSynapseUser:

user = SynapseUser.by_id(client, synapse_user_id)

您需要创建一个方法来为 django 用户获取 synapse_user_id(在本例中为 currentUser

我建议创建一个与 User 具有一对一关系的 UserProfile class,您可以在其中存储此信息和其他信息。

有关如何设置的示例,请参阅 this post