我的名字是奥马尔。我正在开发一个 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 User
的 SynapseUser
:
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/