小ネタです。unittest.mock.patch
を使うと、動的にメソッド内での関数やモジュールを差し替えることができますが元関数の引数への影響をなくしたかったという話です。そういやそもそもこんな記事書いてました。
普通のDjangoでlogin用のAPIを作る
普段はDjangoで普通にWEBアプリを作っていますが、別のクライアントアプリから認証する必要がでたので、login用のAPIを作ることになったのですが、django api login
とかでググるとDjango REST Frameworkでの話ばかりになったのでメモ程度に。
Django Channelsで実装した認証付きWebsocketにPythonで接続する
最近はDjango上でWebsocketを使えるようにするChannelsを仕事でひたすら触っています。さて、Channelsで実装したWebSocketサーバに対して負荷テストをしたいと思ったときには、ログイン処理について考えなければいけません。
ほとんどの場合、ChannelsではDjangoのsessionオブジェクトを使うことができるので、大抵の場合はDjangoでログインしているかを接続受け入れの条件になっています。これを踏まえると、ログイン処理とWebsocketでのテスト処理を用意しなければいけません。これを実現するために少し試行錯誤したのでまとめておきます。
続きを読むDjangoでモデルにauto_nowを指定しても更新されない事がある
Djangoのモデルの時刻系のField(DateTimeField
など)にはauto_now
という属性があります。これをauto_now=True
とするとモデルを更新するたびにその時点での時刻を自動で設定してくれるので、更新時刻などを保持しておきたい場合に便利です。
class AutoAddTest(models.Model): data = models.CharField(max_length=255) # モデルの更新ごとに変更される updated_at = models.DateTimeField(auto_now=True) def __str__(self): return '{} at {}'.format(self.data, self.updated_at)
しかし、更新方法によってはauto_now=True
が動作しないケースがあり、ハマったのでそれを備忘録として残しておきます。
DjangoのFileFieldのバックエンドを動的に切り替えたい(S3BotoStorageの例)
Djangoで実行されたクエリを確認したい(`connection.queries`)
connection.queries
で発行されたSQLを確認できるというDjangoの小ネタです。