* [[Django]] Googleでも利用されているフレームワークです。こりゃ覚えておかないと。 #contents ** 環境 http://www.djangoproject.com/からダウンロードしました。 tar xzvf Django-0.96.1.tar.gz cd Django-0.96.1 python setup.py install leopardの場合、django-admin.pyは/usr/local/binにいました。windowsでは C:\python25;C:\python25\Scripts; にでもパスを通しておきましょう。 ではPython DB API-2.0インターフェイスであるMySQLdbも入れておきましょう。 http://sourceforge.net/projects/mysql-pythonより wget http://downloads.sourceforge.net/mysql-python/MySQL-python-1.2.2.tar.gz?modtime=1172959928&big_mirror=0 windowsはMySQL-python-1.2.2.win32-py2.5.exeで実行すれば、OK tar xzvf MySQL-python-1.2.2.tar.gz python setup.py build んーエラーが sh: mysql_config: command not found ではsite.cfgを編集して、 mysql_config = /usr/local/mysql5/bin/mysql_config としてもう一度。 In file included from /usr/local/mysql5/include/mysql/mysql.h:47, from _mysql.c:40: /usr/include/sys/types.h:92: error: duplicate 'unsigned' /usr/include/sys/types.h:92: error: two or more data types in declaration specifiers In file included from /usr/local/mysql5/include/mysql/mysql.h:47, from _mysql.c:40: /usr/include/sys/types.h:92: error: duplicate 'unsigned' /usr/include/sys/types.h:92: error: two or more data types in declaration specifiers lipo: can't open input file: /var/tmp//ccGIog3v.out (No such file or directory) error: command 'gcc' failed with exit status 1 んーこりゃこまった。_mysql.cを開いて #ifndef uint #define uint unsigned int #endif をコメントしもう一度 ld: warning in /usr/local/mysql5/lib/mysql/libmysqlclient_r.dylib, file is not of required architecture あっそ。leopardはだめなの?ワーニングなんでとりあえず進もう。 python setup.py install では確認 python >>>import MySQLdb でエラーはでなかった。 参考:[[Problems in building 1.2.2 on Mac OS 10.5>http://forums.mysql.com/read.php?50,175059,175059#msg-175059]] 次はPostgresqlもってことで、http://initd.org/software/initd/psycopgから、ん?つながらん。ではhttp://www.zope.org/Members/fog/psycopgから wget http://www.zope.org/Members/fog/psycopg/1.1.6/psycopg-1.1.6.tar.gz tar xzvf psycopg-1.1.6.tar.gz あっつながった.... 2がでてるやんか。windows用はhttp://www.stickpeople.com/projects/python/psycopg/にありました。psycopg2-2.0.7.win32-py2.5-pg8.3.1-release.exeをダウンロードして、実行です。 wget http://initd.org/pub/software/psycopg/psycopg2-2.0.6.tar.gz tar xzvf psycopg2-2.0.6.tar.gz cd psycopg2-2.0.6 python setup.py build おっまたエラーだ。 warning: /bin/sh: pg_config: command not found や ./psycopg/connection.h:27:22: error: libpq-fe.h: No such file or directory がでてるぞ。ではsetup.cfgに pg_config=/usr/local/pgsql/bin/pg_config としてやる。おっ動いた。ただワーニングだけど ld: warning in /usr/local/pgsql/lib/libpq.dylib, file is not of required architecture ってでたな。mysqlと同じか。とりあえず進もう。 python setup.py install 確認として python >>>import psycopg2 でエラーはでなかった。 ** 作る 早速プロジェクトをつくりましょう。ターミナルから django-admin.py startproject TestDjango 次にEclispeからPyDev([[Eclipseプラグイン]])プロジェクトを選択し、 プロジェクト名をdjango-admin.pyでつけた、TestDjango、 「デフォルト'src'フォルダーを作成し、pythonpathへ追加」のチェックを外して作成します。~ 作成ができましたら、今度はそのディレクトリで manage.py startapp testapp でひな形を作成します。~ できましたら、eclipseのTestDjango上で右クリックして、プロパティ>PyDev-PYTHONPATH >ソースフォルダの追加でTestDjangoをPYTHONPATHに追加します。~ testappにmodels.pyができてますんで、 class Book(models.Model): isbn = models.CharField(blank=True,maxlength=100) author = models.CharField(blank=False,maxlength=100) title = models.CharField(blank=False,maxlength=100) price = models.FloatField(max_digits=8,decimal_places=2) とかでつくっておきます。~ settings.pyも直しておきましょう。対象のdbとかにあわせて DATABASE_ENGINE = 'mysql' DATABASE_NAME = 'hotedb' DATABASE_USER = 'root' DATABASE_PASSWORD = 'hogepass' DATABASE_HOST = '' DATABASE_PORT = '' TIME_ZONE = 'Japan' LANGUAGE_CODE = 'ja' INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', 'TestDjango.testapp', ) ではアプリのインストールです。 c:\MyProject\python\TestDjango>manage.py syncdb Creating table auth_message Creating table auth_group Creating table auth_user Creating table auth_permission Creating table django_content_type Creating table django_session Creating table django_site Creating table testapp_book 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: admin << E-mail address: hoge@hoge.com << Password: hogepass << Password (again): hogepass << Superuser created successfully. Installing index for auth.Message model Installing index for auth.Permission model Loading 'initial_data' fixtures... No fixtures found. ではちょっと動かしてみましょう。 python manage.py runserver Eclipseから動かす時は、一度manage.pyをデバッグのPython実行で動かしておき、 失敗するので、デバッグダイアログを開くと、さきほどの動かした設定が追加されているので、引数に runserver 8080 --noreload を追加して再度、デバッグのPython実行をします。 他のマシンから受け付けるときは python manage.py runserver 0.0.0.0:8000 それではブラウザから http://localhost:8000/ ** manage.py ***アプリケーション雛形作成 python manage.py startapp アプリケーション ***テーブル作成 settings.pyのINSTALLED_APPSに記述したアプリケーションのテーブルを作成します。 python manage.py syncdb ***SQL表示 CREATE TABLEを表示してくれます。 python manage.py sql アプリケーション ***SQL表示 すべて CREATE TABLEだけでなくCREATE INDEXも含めて表示してくれます。 python manage.py sqlall アプリケーション ***SQL表示 INDEXのみ python manage.py sqlindexes アプリケーション ***ターミナルから触ってみる python manage.py shell 後はfrom TestDjango.testapp.models import Bookとかでインポートしたりして試してみましょう。 ** TIPS ***__str__ javaでtoStringか。 *** TemplateDoesNotExist at /admin/ Leopardなんですが、adminを動かそうとするとエラーがでました。 cp -R django/contrib/admin/media /Library/Python/2.5/site-packages/django/contrib/admin cp -R django/contrib/admin/template /Library/Python/2.5/site-packages/django/contrib/admin とりあえずこれで動いた ***日本語を表示したい ソースの先頭に # -*- coding: utf-8 -*- を書く ** リンク [[Djangoとは>http://ymasuda.jp/python/django/index.html]]~ [[PyDevでDjangoのアプリをデバッグする>http://www.r-stone.net/blogs/satoshi/2008/02/pydevdjango.html]]~ [[Djangoを使ってみる - DBを使って住所録的なモノを>http://www.autla.com/news/index.php?Django%A4%F2%BB%C8%A4%C3%A4%C6%A4%DF%A4%EB%20-%20DB%A4%F2%BB%C8%A4%C3%A4%C6%BD%BB%BD%EA%CF%BF%C5%AA%A4%CA%A5%E2%A5%CE%A4%F2]] ** 参考書籍 ** コメント -#comment