[Dd]enzow(ill)? with DB and Python

DBとか資格とかPythonとかの話をつらつらと

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のモデルにはFileFieldImageFieldなど、バイナリファイルを扱う属性があります。

これらに格納されるファイルの保存先を動的に変更する方法を確認しました。

続きを読む

Django Channels + Vue.js でWebSocketをつかってTrelloみたいなカンバンを作ってみた

ChannelsとVue.jsの練習がてらカンバンを実装してみました。割りとカンバンのUIの実装記事はあるのですが、サーバ側までセットになったものが少なかったのでがんばりました。

f:id:denzow:20180415223219g:plain

github.com

リポジトリのコードが全てではありますが、一応メモ程度に内容を残しておきます。

続きを読む