python - SynapsePay 和 Django 用户问题的冲突实例

标签 python django synapsepay

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

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

API 的某些部分是我无法控制的,它们在 Api 中使用“用户”对象,并且它正在获取错误的对象或试图获取正在传递的 key 中不存在的 key 。

这是我拥有的所有代码以及我试图获取的错误...

以下代码是获取表单内容并使用 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

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

最佳答案

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

行:

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 类,您可以在其中存储此信息和其他信息。

参见this post例如如何设置。

关于python - SynapsePay 和 Django 用户问题的冲突实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46165824/

相关文章:

python - 无法在 Windows 上安装 python

python - 在 Windows 中读取 Ubuntu 机器上写入的 excel 文件时出错(使用 Pandas)

python - 为什么将 groupby 转换为列表时 groupby 分组会发生变化?

python - 是否有使用Mongodb和Django的明确方法?

python - Django 如何在 django-admin 中将 <bound method ... >> 对象显示为字符串对象?

django - 如何遍历 Django 模板中的反向泛型关系?

python - 对象 'user' 没有属性 'create' - Django

python:如何重建需要编译的依赖项