🕌
Pythonを使ってDrupalのコンテンツを更新・削除する
概要
以下の記事で、コンテンツの新規登録の方法を記載しました。
今回は、既存のコンテンツの更新・削除を試みます。
アイテムの絞り込み
以下のようなプログラムにより、登録済みのコンテンツを取得することができます。今回は、titleが「更新前のタイトル」のコンテンツを取得しました。res["data"]
は配列になります。
username = "xxx"
password = "xxx"
host = "xxx"
query = {
"title": "更新前のタイトル"
}
item_type = "article"
filters = []
for key, value in query.items():
filters.append(f'filter[{key}]={value}')
filter_str = '&'.join(filters)
endpoint = f'{host}/jsonapi/node/{item_type}?{filter_str}'
r = requests.get(endpoint, headers=headers, auth=(username, password))
res = r.json()
len(res['data'])
更新対象のコンテンツのID取得
730f844d-b476-4485-8957-c33fccb7f8ac
のようなIDが得られます。
item = res['data'][0]
item_id = item['id']
更新
type
とid
を指定して更新します。
payload = {
"data": {
"type": f"node--{item_type}",
"id": item_id,
"attributes": {
"title": "更新後のタイトル"
}
}
}
url = f"{host}/jsonapi/node/{item_type}/{item_id}"
r = requests.patch(url, headers=headers, auth=(username, password), json=payload)
r.json()
削除
削除は以下で実行できました。
requests.delete(url, auth=(username, password))
まとめ
プログラムからDrupal上のコンテンツの編集する際などの参考になりましたら幸いです。
Discussion