Djangoを利用してアプリを作る

以前も少し書きましたが、C#とASP.NETで作成していた自分用の「レシピ管理システム」を、現在Djangoで作り直しています。
※リポジトリはこちら

DjangoはPythonで作られたフルスタックフレームワークです。
よく言語比較をされるRubyではRuby on Railsが有名であり、そちらのほうが巷では人気がありますが、
昨今の機械学習ブームも手伝ってPythonという言語自体はとても注目されています。

以前バッチ処理でPythonを利用していた私としては、せっかくなのでWebアプリも作ってみようということで挑戦することにしました。
ただ、Djangoに関する文献やドキュメントは英語が多く、最低限動作させるのにも結構苦労しましたので、今後Djangoを学ぶ方の役に立てばいいなと思いこの記事を書きます。

ちなみにチュートリアルは基本日本語ページですが、半分ぐらいは英語ページのままだったりします。

プロジェクト≠アプリケーション

他言語でWebフレームワーク利用経験があると、まずここで混乱します(私もそうでした)。

たとえば「CakePHP」の場合、以下コマンドでアプリケーションを作成して、それをそのままプロジェクトとして利用します。

先ほどあげた「Ruby on Rails」も同様です。

Djangoの場合、プロジェクト内で機能や用途に応じてアプリを分けるという方針で開発することになります。
最近のソーシャルゲームだと、ユーザ情報、イベント情報、手持ちのキャラクターなどはすべて別アプリで、それらをまとめて1つのプロジェクトとして管理するようです。
※ここらへんは、作成中のレシピ管理システムにはまだ反映できていません…。

プロジェクト作成

アプリ作成

利用する主なファイル

他のフレームワークであるような「MVC構成」とは少し異なります。
作成したアプリで以下のファイルが配置されますので、それぞれの中で一括管理するようです。

  • urls.py…ルーティング関連
  • views.py…コントローラ関連
  • models.py…モデル関連

urls.pyは、デフォルトではプロジェクト・各アプリそれぞれにあります。
プロジェクトのurls.pyではパスを各アプリへの振り分けを行い、各アプリではそれ以下のパスの振り分けを行っています。

以上、ひとまず基本部分でした。
テンプレートでのヘルパー利用やモデルの設定についても触れたいのですが、それは次回以降にまわします。
興味を持っていただけた方は、まずは上記Bitbucketのリポジトリをご覧ください。

↓当サイトのドメインは以下で取得しました。

サービスはリリースしてからが勝負

以前、健康診断で引っかかったことをきっかけに、自分用にレシピをまとめるサイトを作成しました。
その当時興味があったASP.NET(C#)で作成したのですが、サーバとして利用しているUbuntuへのデプロイが面倒だったこともあり(当時はMonoもそこまでメジャーじゃなかったので)、あまりメンテナンスできておりませんでした。

そして最近、これをPythonで書き直そうとしています。
Pythonは以前からバッチ処理で利用していたのですが、Webフレームワークとして利用してみたかったということと、今後様々な分野で活かせそうだという期待を込めて本格的に学習することに決めました。

フレームワークには一番メジャーなDjangoを使っているのですが、日本語のドキュメントがほとんどないのでかなり大変です。
困ったときは以下のリファレンスを参照するようにしています(日本語用のページですが、英語のままの部分も多いです)。
Django ドキュメント

1つのプロジェクトに複数のアプリがぶら下がるという構成にはまだ慣れないですが、フルスタックフレームワークということもあり開発は比較的スムーズに進んでいます。
まずは3月中に運用開始できることを目標にしています。

次回はこのDjangoを使った基本的な開発について触れようと思います。

↓当サイトのドメインは以下で取得しました。