2017-03-16 2 views
1

메신저에서 가입자를 만드는 함수를 작성하려하지만 오류가 발생하고 잘못된 점을 이해할 수 없습니다.Python : 대량 API로 mailchimp에 가입자 추가 V3

python-mailchimp를 사용하여 (그리고 그래, 나는 MYE 올바른리스트 ID와하지 000000가)

내 코드 :

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 

누구나 볼 : 여기

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}]})  

는 역 추적입니다 무슨 일이야?

업데이트

내가 "body":json.dump(databody)을한다면 나도 같은 오류가 발생하지 않는

하지만 Schema describes object, array found instead.

답변

3

이 올바른 방법

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}) 
입니다