Python “如何修复”;类型错误:';dict';对象不可调用";请求中
我的目标是使用Mailgun发送电子邮件。我使用Flask调用它,使用Python “如何修复”;类型错误:';dict';对象不可调用";请求中,python,python-3.x,python-requests,mailgun,Python,Python 3.x,Python Requests,Mailgun,我的目标是使用Mailgun发送电子邮件。我使用Flask调用它,使用请求库: contact.py def index(): data = request.form.to_dict() send_email(data) return "Success!" 发送电子邮件() 我知道这与send\u email()功能有关,但我目前正忙于解决这个问题 编辑:以下是完整的回溯: Traceback (most recent call last): File "/usr/lib/p
请求
库:
contact.py
def index():
data = request.form.to_dict()
send_email(data)
return "Success!"
发送电子邮件()
我知道这与send\u email()
功能有关,但我目前正忙于解决这个问题
编辑:以下是完整的回溯:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/lib/python3/dist-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python3/dist-packages/flask/_compat.py", line 33, in reraise
raise value
File "/usr/lib/python3/dist-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "contact.py", line 9, in index
send_email(data)
File "/home/david-hermes/Desktop/Projects/frontend/web/single-page-resume/send_email.py", line 44, in send_email
data=data,
File "/usr/lib/python3/dist-packages/requests/api.py", line 112, in post
return request('post', url, data=data, json=json, **kwargs)
File "/usr/lib/python3/dist-packages/requests/api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 494, in request
prep = self.prepare_request(req)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 437, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "/usr/lib/python3/dist-packages/requests/models.py", line 309, in prepare
self.prepare_auth(auth, url)
File "/usr/lib/python3/dist-packages/requests/models.py", line 540, in prepare_auth
r = auth(self)
TypeError: 'dict' object is not callable
127.0.0.1 - - [31/Jan/2019 21:01:28] "POST / HTTP/1.1" 500 -
您错误地使用了
api
参数。您希望以元组形式传入用户名和密码组合:
Mailgun API确实存在,但要使用auth
关键字参数发送基本身份验证标头,您可以传入:
使用HTTP Basic Auth发出请求非常简单:
>>> from requests.auth import HTTPBasicAuth
>>> requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))
<Response [200]>
>>from requests.auth import HTTPBasicAuth
>>>请求。获取('https://api.github.com/user,auth=HTTPBasicAuth('user','pass'))
事实上,HTTP Basic Auth非常常见,请求为使用它提供了方便的速记:
>>> requests.get('https://api.github.com/user', auth=('user', 'pass'))
<Response [200]>
>>请求。获取('https://api.github.com/user,auth=('user','pass'))
在这样的元组中提供凭据与上面的HTTPBasicAuth
示例完全相同
对,所以auth={“api”:api_KEY}
是字典。那是因为这个。
>>> from requests.auth import HTTPBasicAuth
>>> requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))
<Response [200]>
>>> requests.get('https://api.github.com/user', auth=('user', 'pass'))
<Response [200]>