DRF JSONデータの成形
成形する必要性
django rest framework の場合request.POSTには注意事項がある。
それはキーに対する値が空(ブランク?null?)の項目はDRFはエラーを吐き出す。
辞書型データに例えて説明すると、ex_dict["key1"]=""の要素を含むデータをrequests.POSTするとエラーが出るという意味だ。
したがってJSONデータをPOSTする前に空データを削除する工程を加える必要がある。これはJSONデータに変換してから該当要素を削除するよりも、辞書型データの段階で空の値を検出して当該データから削除し、JSONデータに変換する方法をとるのがおすすめだ。
以下のコードは実装例になる。
実装例
fieldnames = ("id","title","length","datetime") with open(INPUT_FILE,"r",encoding="utf-8") as f: reader = csv.DictReader(f, fieldnames) for row in reader: # rowはdictデータ for key, value in list(row.items()): if value == "": # valueが空の場合にdictデータからその要素を削除する del(row[key]) headers = {'content-type': 'application/json'} URL = "http://127.0.0.1:8000/api/" data = json.dumps(row) # dict型データをJSONに変換する res = requests.post(URL, data=data, headers=headers) print(res)