0

プログラムでクライアントオブジェクトを削除してから、提供されているAPIを使用してactiveCollabでオブジェクトを削除しようとしています。オブジェクトを削除することはできますが、APIを呼び出すと404エラーが発生し続けます。c.idを印刷しましたが、正しいIDを取得しています。また、reqステートメントの「:company_id」をクライアントの実際のIDに置き換えると、機能します。

削除のコードは次のとおりです。

def deleteClient(request, client_id):
   c = get_object_or_404(Clients, pk = client_id)
   #adding the params for the request to the aC API
   params = urllib.urlencode({
     'submitted':'submitted',
     'company[id]': c.id,   
   })
   #make the request
   req = urllib2.Request("http://website_url/public/api.php?path_info=/people /:company_id/delete&token=XXXXXXXXXXXXXXXXXXXX", params)
   f = urllib2.urlopen(req)
   print f.read()
   c.delete()
   return HttpResponseRedirect('/clients/')

みんな、ありがとう。

削除に関するAPIドキュメントへのリンクは次のとおりです:http: //www.activecollab.com/docs/manuals/developers/api/companies-and-users

4

1 に答える 1

1

ドキュメントから:company_id、実際の会社IDに置き換えられることになっているようです。この交換は自動的には行われません。現在、POSTパラメーター(APIは予期していません)で会社IDを送信しており':company_id'、クエリ文字列でリテラル値を送信しています。

次のようなものを試してください:

url_params=dict(path_info="/people/%s/delete" % c.id, token=MY_API_TOKEN)
data_params=dict(submitted=submitted)
req = urllib2.Request(
    "http://example.com/public/api.php?%s" % urllib.urlencode(url_params), 
    urllib.urlencode(data_params)
    )

もちろん、あなたはこのapi.phpスクリプトをターゲットにしているので、そのスクリプトが魔法の置き換えを行うことになっているのかどうかはわかりません。しかし、手動で:company_id実際の値に置き換えると機能することを考えると、これが最善の策だと思います。

于 2010-11-10T20:02:10.150 に答える