🙄
Pythonを使ってDrupalにコンテンツを追加する
概要
Pythonを使ってDrupalにコンテンツを追加する機会がありましたので、その備忘録です。以下の記事を参考にしました。
Drupalの準備
Amazon Lightsailに作成しました。以下の記事などが参考になります。
モジュール
以下をインストールします。
- HTTP Basic Auth
- JSON:API
- RESTful Web Services
- Serialization
JSON:APIの設定変更
以下にアクセスして、設定を変更します。
</admin/config/services/jsonapi>
Python
{ipアドレス or ドメイン名}、{パスワード}を適宜設定してください。
Amazon Lightsailの場合、初期ユーザ名はuser
です。またパスワードは以下のコマンドで確認します。
cat ~/bitnami_application_password
import requests
from requests.auth import HTTPBasicAuth
endpoint = 'http://{ipアドレス or ドメイン名}/jsonapi/node/article'
u = 'user'
p = '{パスワード}'
headers = {
'Accept': 'application/vnd.api+json',
'Content-Type': 'application/vnd.api+json'
}
payload = {
"data": {
"type": "node--article",
"attributes": {
"title": "What's up from Python",
"body": {
"value": "Be water. My friends.",
"format": "plain_text"
}
}
}
}
r = requests.post(endpoint, headers=headers, auth=(u, p), json=payload)
r.text
その他
以下のようにnote_type
の登録も試みました。
payload = {
"data": {
"type": "node_type--node_type",
"attributes": {
"title": "テスト",
"description": "node_typeのテストです。"
}
}
}
url = f"{host}/jsonapi/node_type/node_type"
r = requests.post(url, headers=headers, auth=(username, password), json=payload)
r.json()
結果、以下のように、Method Not Allowed
となりました。
{'jsonapi': {'version': '1.0',
'meta': {'links': {'self': {'href': 'http://jsonapi.org/format/1.0/'}}}},
'errors': [{'title': 'Method Not Allowed',
'status': '405',
'detail': 'No route found for "POST /jsonapi/node_type/node_type": Method Not Allowed (Allow: GET, HEAD)',
...
引き続き調査を続けたいと思います。
まとめ
Headless CMSとしてDrupalを活用するために、引き続き調査を行いたいと思います。
Discussion