Python:使用批量API V3将订阅者添加到mailchimp [英] Python: Adding subscribers to mailchimp with bulk API V3
本文介绍了Python:使用批量API V3将订阅者添加到mailchimp的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试编写一个函数来在mailchimp中创建订阅者,但是出现错误,并且我不明白什么是错的.
Im trying to write a function to create subscribers in mailchimp, but I get an error, and I can't understand what is wrong.
我正在使用 python-mailchimp (是的,我有正确的list-id和不是000000)
Im using python-mailchimp (And yes, I have mye correct list-id and not 000000)
我的代码:
from mailchimp3 import MailChimp
def export_to_mailchimp():
#Get all users in DB
users = User.objects.all()
#Create list for dictionaries
databody = []
#loop through queryset
for userobject in users:
#Create dictionary
databody_item = {
"email_address": item.email,
"status": "subscribed",
"merge_fields": {
"FNAME": item.first_name,
"LNAME": item.last_name
}
}
#Append to list
databody.append(databody_item)
client = MailChimp(settings.MAILCHIMP_USER, settings.MAILCHIMP_KEY)
batch = client.batches.create(data={"operations" : [{"method":"POST", "path":"/lists/00000/members/", "body":databody}]})
这是回溯:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/USER/.virtualenvs/DOMAIN/lib/python3.4/site-packages/celery/local.py", line 188, in __call__
return self._get_current_object()(*a, **kw)
File "/home/USER/.virtualenvs/DOMAIN/lib/python3.4/site-packages/celery/app/task.py", line 420, in __call__
return self.run(*args, **kwargs)
File "/home/USER/.virtualenvs/DOMAIN/PROJECT/apps/members/tasks.py", line 2340, in update_mailchimp
batch = client.batches.create(data={"operations" : [{"method":"POST", "path":"/lists/000000/members/", "body":databody}]})
File "/home/USER/.virtualenvs/DOMAIN/lib/python3.4/site-packages/mailchimp3/entities/batches.py", line 53, in create
return self._mc_client._post(url=self._build_path(), data=data)
File "/home/USER/.virtualenvs/DOMAIN/lib/python3.4/site-packages/mailchimp3/mailchimpclient.py", line 25, in wrapper
return fn(self, *args, **kwargs)
File "/home/USER/.virtualenvs/DOMAIN/lib/python3.4/site-packages/mailchimp3/mailchimpclient.py", line 71, in _post
r.raise_for_status()
File "/home/USER/.virtualenvs/DOMAIN/lib/python3.4/site-packages/requests/models.py", line 862, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://us12.api.mailchimp.com/3.0/batches
有人看到我在做什么错吗?
Anyone see what Im doing wrong?
如果我执行"body":json.dump(databody)
,则不会出现相同的错误,但会出现Schema describes object, array found instead
.
If I do "body":json.dump(databody)
I don't get the same error, but Schema describes object, array found instead
.
推荐答案
这是正确的方法
from mailchimp3 import MailChimp
def export_to_mailchimp():
#Get all users in DB
users = User.objects.all()
#Create list for dictionaries
operations = []
#loop through queryset
for userobject in users:
#Create dictionary for body
databody_item = {
"email_address": item.email,
"status": "subscribed",
"merge_fields": {
"FNAME": item.first_name,
"LNAME": item.last_name
}
}
#Create dictionary for a operation
operation_item = {"method":"POST", "path":"/lists/000000/members/", "body":json.dumps(databody_item)}
#Append to list
operations.append(operation_item)
client = MailChimp(settings.MAILCHIMP_USER, settings.MAILCHIMP_KEY)
batch = client.batches.create(data={"operations": operations})
这篇关于Python:使用批量API V3将订阅者添加到mailchimp的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文