Debian 環境でも評価にトライ
なんか暇人クサい。とりあえず SD な本にある特徴の内、気になる部分を以下に列挙。
- cache
- 継承可能なテンプレート
- 国際化
- テストクライアント / テストランナー
も少しツッコんで動作確認を行なった挙句に apache 配下に配置して、色々確認してみたい、というかソコまでやらんと動作確認にはならんな。
環境構築
django をどこに置くか、とゆーのが問題。資料チェックしたトコでは、django は setup.py というナニがあるんでそれを使えば良い、とある。chroot な環境で試験中なんですが、Debian のバージョンが上がったのを忘れててとりあえず、testing な upgrade 中。時間がかかりそうなんで、このまま fadeout しそうな予感。
と、言いつつもなんとなく終わったんで django を download。解凍して以下。
$ cd Django-0.95.1 $ su password: # python setup.py install (出力略
略された出力の終わりあたりにこんな出力が
Installing easy_install script to /usr/bin Installing easy_install-2.4 script to /usr/bin Installed /usr/lib/python2.4/site-packages/setuptools-0.6c1-py2.4.egg Processing dependencies for setuptools==0.6c1 Processing Django-0.95.1-py2.4.egg creating /usr/lib/python2.4/site-packages/Django-0.95.1-py2.4.egg Extracting Django-0.95.1-py2.4.egg to /usr/lib/python2.4/site-packages Adding Django 0.95.1 to easy-install.pth file Installing django-admin.py script to /usr/bin Installed /usr/lib/python2.4/site-packages/Django-0.95.1-py2.4.egg Processing dependencies for Django==0.95.1
むむ。/usr/bin ですか。とりあえずスルーで developerworks のソレをなぞってみる。
プロジェクトとアプリケーション
メンドいのでコマンドのみ
$ django-admin.py startproject djproject $ cd djproject/ $ ls __init__.py manage.py settings.py urls.py $ python manage.py startapp jobs $ cd jobs/ $ ls __init__.py models.py views.py $
で、djproject の settings.py のソレを以下に。
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'djproject.jobs', )
モデル
settings.py の修正は略。jobs/models.py の修正も略。で、試験。
$ python manage.py sql jobs BEGIN; CREATE TABLE "jobs_job" ( "id" integer NOT NULL PRIMARY KEY, "pub_date" date NOT NULL, "job_title" varchar(50) NOT NULL, "job_description" text NOT NULL, "location_id" integer NOT NULL ); CREATE TABLE "jobs_location" ( "id" integer NOT NULL PRIMARY KEY, "city" varchar(50) NOT NULL, "state" varchar(50) NULL, "country" varchar(50) NOT NULL ); -- The following references should be added but depend on non-existant tables: COMMIT; $
なんと色付き。syncdb すると以下。
$ python manage.py syncdb Creating table auth_message Creating table auth_group Creating table auth_user Creating table auth_permission Creating many-to-many tables for Group model Creating many-to-many tables for User model Creating table django_content_type Creating table django_session Creating table django_site Creating table jobs_job Creating table jobs_location You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes Username (Leave blank to use 'rms'): admin E-mail address: Error: That e-mail address is invalid. E-mail address: adm@dummy.com Password: Password (again): Superuser created successfully. Adding permission 'message | Can add message' Adding permission 'message | Can change message' Adding permission 'message | Can delete message' Adding permission 'group | Can add group' Adding permission 'group | Can change group' Adding permission 'group | Can delete group' Adding permission 'user | Can add user' Adding permission 'user | Can change user' Adding permission 'user | Can delete user' Adding permission 'permission | Can add permission' Adding permission 'permission | Can change permission' Adding permission 'permission | Can delete permission' Adding permission 'content type | Can add content type' Adding permission 'content type | Can change content type' Adding permission 'content type | Can delete content type' Adding permission 'session | Can add session' Adding permission 'session | Can change session' Adding permission 'session | Can delete session' Creating example.com Site object Adding permission 'site | Can add site' Adding permission 'site | Can change site' Adding permission 'site | Can delete site' Adding permission 'job | Can add job' Adding permission 'job | Can change job' Adding permission 'job | Can delete job' Adding permission 'location | Can add location' Adding permission 'location | Can change location' Adding permission 'location | Can delete location' $
一応なんとなってる、という事で。
クエリーセット
windows で試験してる時には試さ (せ) なかったんですが、試験の方法のみを以下に。以下のコマンドでシェルを起動するらしい。
$ python manage.py shell (以下略
管理者ツール
もう少し頑張ってみる。setting.py に django.contrib.admin を追加。djproject/urls.py なソレを uncomment。で、以下。
$ python manage.py syncdb Creating table django_admin_log Adding permission 'log entry | Can add log entry' Adding permission 'log entry | Can change log entry' Adding permission 'log entry | Can delete log entry' $
で、試験用のサーバを起動。
$ python manage.py runserver Validating models... 0 errors found. Django version 0.95.1, using settings 'djproject.settings' Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
http://localhost:8000/admin アクセスできます。モデルに admin なソレも盛り込んで試験してみましたが、詳細は略。
ビューの実装
urls.py と jobs/urls.py を盛り込み、jobs/views.py を以下の形で実装後、http://localhost:8000/jobs にアクセス。
from django.http import HttpResponse def index(request): return HttpResponse("Job Index View")
もう少し頑張ってみる。
テンプレートを作成
しかし一生懸命ヤッてる割に DRY という観点においてダウトだな。と、言いつつ死亡。