* [[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