Django:複数アプリで利用する関数を共通化する方法

Django:複数アプリで利用する関数を共通化する方法

Django:複数アプリで利用する関数を共通化する方法

例えばユーザーのランク(role)でコメントやアイコンを変えるなど、アプリを超えて同じ処理をすることがあります。
こんな時にどうすればいいかを記載します。

実装の概要

  1. projectディレクトリの下に【 libraries.py 】というファイルを用意
  2. project.libraries.py にアプリを超えて使いたい共通関数を記載する(例として TEST という関数を作成したとする)
  3. 共通関数を使用するPythonファイルで from project.libraries import TEST を記載して読み込む
  4. 使いたい個所で TEST() としてreturnを受け取る

これだけで出来るんですね。

Laravelの Library のイメージでやってみたら難なくうまくいきました。
共通関数を格納するファイル名や保管場所はどこでもOKみたいです。
正しい場所を指示してUSEすればどうとでも使えると言う事ですね。

共通関数に引数を渡したい

これも TEST(引数) で簡単に受け渡せました。

複数の引数を渡したい場合は【カンマ】で区切って送ってあげるだけでOKです。

活用の方法

業務システム系を作成していると『グラフを描くシーン』が多々出てきます。
こんな時、共通関数を使ってプログラミングの工数を減らすことができます。

  • データの最初の成型(グラフ関数に投げるデータの成型)を共通化する
  • 全てのグラフ関数は同じデータ形式から処理をスタートする
  • 顧客の要望で描写するグラフの形が変わっても読込む関数を変更するだけで処理が完了する

最初の成型をJshonにするとかPandasにするとか決めておけば、あとは投げる関数が変わるだけ。

グラフを並べてみたら棒グラフだけでビジュアル的に…とかいう時ありますよね。
こんな時送る場所変えるだけでビジュアル変更出来ちゃいます。便利だなぁ。
出来上がったものを流用できるので、一度作ってしまえばプロジェクト超えても使えます。

まとめ

この記事を書く前まではアプリごとのViews.pyに書いていたのですが「同じこと直すの嫌だな」と思い共通化を試みたところ、うまく処理されました。

グラフの共通化、楽しくてハマりそうです。