Django でちょっとしたアプリを作成する手順の覚え書き (1)
ちょっとした ユーティリティ Webアプリをつくるのに、Django 便利。
DBカラムの論理名、物理名変換とか、SQLを生成したりとかするようなツールを Webアプリでつくっておくとチーム間で共有できるしExcelマクロより使い勝手が良い場合もしばしば。しかも簡単につくれて、Pythonのパワフルさを十全に利用できる。
ただ、そんなに頻繁につくるものではないので、手順を忘れがち。簡単に動かすところまでをメモしておく。
ダウンロード
Django Download から、Django-1.3.tar.gz あたりをダウンロード。
ダウンロードしたファイルを解凍。
するのだが、tar.gz で圧縮されているので、Windows 7 のエクスプローラーから解凍できない。
こういうとき、Cygwin を入れておくと便利。上記ファイルをダウンロードしたディレクトリに、Cygwinのコンソールから行って、解凍を行う。Windows のドライブは、cygdrive にマッピングされる。
$ cd /cygdrive/C/Users/piroto/Downloads $ tar -xvf Django-1.3.tar.gz
上記の場合、解凍されると、
C:\Users\piroto\Downloads\Django-1.3
というディレクトリが作成される。
インストール
以下のコマンドを実行
C:\Users\piroto\Downloads\Django-1.3>python setup.py install
インストールの確認
以下のコマンドでエラーがでなければOK
C:\Users\piroto\Downloads\Django-1.3>python Python 2.7.1 (r271:86832, Nov 27 2010, 17:19:03) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import django >>>
プロジェクトの作成
Eclipse にPyDev をインストール
Help – Install New Software から、ダウンロードサイトURL に以下を追加してインストール
PyDevプロジェクトの作成
Eclipse から File – New – Other から PyDev グループを選択し、PyDev Django Projecto を作成。
以下のファイルが作成される
ファイル | 概要 |
__init__.py | このディレクトリがパッケージだとPythonに伝える空のファイル |
manage.py | プロジェクトと対話するためのコマンドラインユーティリティ |
settings.py | プロジェクトの設定ファイル |
urls.py | プロジェクトのURL宣言 |
Djangoの実行
とりあえず、プロジェクトのコンテキストメニューから、Run As - PyDev : Django で、Django サーバーを起動し、ブラウザからアクセス。
「It workd!」 と出るはず。
アプリケーションの作成
プロジェクトのコンテキストメニューから、Django - Create application(manage.py startapp) を選択し、名称を設定(以下の例では、model_name_util)し、アプリケーションを作成する。
URLの設計
以下の書式に従って、URLのリストを、urls.py に記述する。正規表現に一致するリストの、Python コールバック関数を呼び出す。
(正規表現, Python コールバック関数 [, オプションのディクショナリ])
/model_name_util/ のリクエストを、webapp_util.model_name_util.views モジュールの index 関数が処理するように urls.py に設定
urls.py
urlpatterns = patterns('', (r'^model_name_util/$', 'webapp_util.model_name_util.views.index'), )
index関数の実装
呼び出されるコールバック関数を views.py に実装。
HTMLをテンプレートとして呼び出し、コンテキストに値を詰めてテンプレートのレンダリングを行う
。
from django.template import Context, loader from django.http import HttpResponse def index(request): t = loader.get_template('model_name_util/index.html') c = Context({ 'message':'Hello Django World.' }) return HttpResponse(t.render(c))
テンプレートの作成
テンプレートを、settings.py の TEMPLATE_DIR に指定したディレクリに作成する。先頭はスラッシュで始まる必要があり(Windowsでも)、ディレクトリは絶対パス。(ちと面倒くさい)
settings.py
TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. "/Users/piroto/workspace_test/webapp_util/src/template" )
index.html
<!DOCTYPE html> <html> <head> </head> <body> Django Template. <br/> {{message}}<br/> settings.py の TEMPLATE_DIRS に絶対パスを指定する必要があるので注意! </body> </html>
全体の構成
この時点で全体の構成は、こんな感じ
一旦実行
ちゃんと動いているようだ。
Model は次回。