SynapsePay& Django用户问题的实例冲突

时间:2017-09-11 23:44:59

标签: python django synapse

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

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

有些部分的api是我无法控制的,它使用Api中的'User'对象,它抓取错误的对象或试图抓取在传递的密钥中不存在的密钥。

以下是我所拥有的所有代码以及我想要获得的错误......

以下代码是获取表单内容并使用api测试银行验证。

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

这是views.py文件:

IModelBinder

以下是用户提交关联帐户表单时出现的错误:

var tries = 0;    
function getStatus() {
  $.ajax({
    type: 'POST',
    url: url,
    success: function(msg){
      tries++;
      if (msg == 1){
         $('#status').text('success');
      } else {
          if (tries >= 5 ) {
            $('#status').text('failed');
          } else {
             setTimeout(getStatus, 1000);
          }
      }
    }
  });
}

create_via_bank_login是在api中创建的内部方法,而不是我可以更改的内容。如何让它获取SynapseUser

**更新**

以下代码用于通过id查找用户:

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

因为我刚刚添加的代码在返回创建的用户信息时起作用

然后代替:

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)

如何找出请求有错误的位置?

1 个答案:

答案 0 :(得分:1)

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

该行:

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

应该是:

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

其中user的类型为SynapseUser

所以你需要事先获取django SynapseUser的{​​{1}}:

User

您需要创建一个方法来获取django用户的user = SynapseUser.by_id(client, synapse_user_id) (在这种情况下为synapse_user_id

我建议创建一个currentUser类,与UserProfile建立一对一的关系,您可以在其中存储此信息和其他信息。

请参阅this post,了解如何进行设置。