Django

Django Rest Framework + django.test.RequestFactoryを使うと期待値と異なるbodyが渡される

まとめ Django Rest Frameworkを使っている場合、テストを書くときのRequestFactoryは rest_framework.test.APIRequestFactory を使ったほうがいい 起きたこと テストとpostmanからリクエストを受けたときでRequestオブジェクト内のbodyの型が違ったので調べ…

Djangoのテストでsettingsの値をモックする

定期的に忘れるのでメモ settingsの値をモックしたいときは、 django.test.utils.override_settings か TestCase.settings を使う。 override_settingsを使う場合 参考: https://gist.github.com/blaix/2294982#gistcomment-1318400 に書いてある通り。 fro…

Python+Django+MySQL環境でMySQLdbがModuleNotFoundErrorになったときの対処

こんなエラーログ File "/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 15, in <module> import MySQLdb as Database ModuleNotFoundError: No module named 'MySQLdb' 対処方法 使っているsettingファイルに、以下のコードブロ</module>…

Django Rest FrameworkのSerializerでバリデーションをして、ついでにkey名を変更したいとき

Modelから取得したレコードをシリアライズするSerializerでは、入出力するkey(カラム)名が異なる場合、sourceオプションで入力元のカラム名を指定すればよい。 しかし、dictを整形したりvalidationしたいがためだけにSerializerを使う場合、これが逆にする…

Djangoで空文字・Noneを許容する文字列Validateを作る

やりたいこと DjangoのSerializerで、 空文字とNoneと、ついでに未入力も許容する文字列バリデータをつくる 結論 CharFieldを定義するときに、 requiredだけでなく allow_blank, allow_null も設定しよう(でも罠がある) class TestSerializer(serializers.…