📑
Pythonを使ってDrupalのタクソノミーの登録とコンテンツへの追加
概要
以下のシリーズの続きです。
今回は、タクソノミーの登録とコンテンツへの追加を行います。
タクソノミーの登録
事前に、ne_class
というタクソノミーをGUIを通じて作成しました。以下のようなURLで一覧できます。
/jsonapi/taxonomy_term/ne_class
以下、新しいタクソノミーを登録するプログラムです。host
, username
, password
は適宜設定してください。
payload = {
"data": {
"type": "taxonomy_term--ne_class",
"attributes": {
"name": "干瀬",
}
}
}
_type = "ne_class"
url = f"{host}/jsonapi/taxonomy_term/{_type}"
r = requests.post(url, headers=headers, auth=(username, password), json=payload)
r.json()
以下のような結果が得られます。
{'jsonapi': {'version': '1.0',
'meta': {'links': {'self': {'href': 'http://jsonapi.org/format/1.0/'}}}},
'data': {'type': 'taxonomy_term--ne_class',
'id': '17c70bd6-e6fc-46e2-bb5d-2377ba9c8ab8',
...
コンテンツへの追加
事前に、Place
というコンテンツタイプをGUIを通じて作成しました。また、field_ne_class
を作成して、上記のタクソノミーne_class
を値の候補として設定しました。
relationships
のid
に先程取得したタクソノミーのidを指定しています。
payload = {
"data": {
"type": "node--place",
"attributes": {
"title": "xxx"
},
"relationships": {
"field_ne_class": {
"data": {
"type": "taxonomy_term--ne_class",
"id": "17c70bd6-e6fc-46e2-bb5d-2377ba9c8ab8",
}
}
}
}
}
_type = "place"
url = f"{host}/jsonapi/node/{_type}"
r = requests.post(url, headers=headers, auth=(username, password), json=payload)
r.json()
まとめ
タクソノミーの追加やコンテンツへの関連付けも機械的に行うことができそうです。他のよりよい方法もあるかと思いますが、参考になりましたら幸いです。
Discussion