Google Map API helper app for Djangoを使ってGoogle Mapsアプリを作ってみたいので、再度Djangoをチュートリアルからやってみます。
Google Map API helper app for Django
http://code.djangoproject.com/wiki/django-gmap
自宅内のLinux(Vine)サーバに現在に最新のDjango安定版をインストールします。
Djangoチュートリアル(前編)
http://codezine.jp/article/detail/4065
の内容をやりながら思い出します。
How to get Django
http://www.djangoproject.com/download/
より、Django-1.2.4.tar.gzをダウンロードしてインストール。
インストールされたことを確認します。
$ python
Python 2.4.4 (#1, Apr 25 2008, 09:54:36)
[GCC 3.3.6 release (Vine Linux 3.3.6-0vl7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 2, 4, 'final', 0)
Django-1.2.4は、Python 2.4系でも動作するとのことで、これで行きます。
任意の階層にてDjangoプロジェクトを作成します。
$ django-admin.py startproject gmap
必要なファイルが一式生成されます。
$ cd gmap/
$ ls
__init__.py manage.py settings.py urls.py
開発サーバの起動し動作確認をします。
$ ./manage.py runserver
-bash: ./manage.py: 許可がありません
「許可がありません」とエラーが出ます。
所有者の実行権限を加えます。
$ chmod u+x manage.py
再度、開発サーバの起動し動作確認をします。
$ ./manage.py runserver
Validating models...
0 errors found
Django version 1.2.4, using settings 'gmap.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
この状態で、家庭内の他のパソコンから、サーバの指定のポートにアクセスします。しかし、アクセスできません。
manage.py runserver にオプションとして、IPを指定しない (0.0.0.0 を使う)ことによって、ローカル以外からも接続可能になります。
再度、開発サーバの起動し動作確認をします。
$ ./manage.py runserver 0.0.0.0:8000
Validating models...
0 errors found
Django version 1.2.4, using settings 'gmap.settings'
Development server is running at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
[23/Dec/2010 03:32:22] "GET / HTTP/1.1" 200 2047
再度、ローカル以外でのパソコンでアクセスをすると
アクセス出来ました。
ここで作成したソースを一式 Subversionに登録しておきます。登録したソースをチェックアウトして再開。
setting.pyの編集(SQLiteを使う設定)
DATABASES = {
'default': {
'ENGINE': 'sqlite3',
'NAME': 'gmap.sqlite',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
TIME_ZONE = 'Asia/Tokyo'
LANGUAGE_CODE = 'ja'
DjangoプロジェクトのDB初期化をします。
$./manage.py syncdb
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
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 'hoge'): hoge
E-mail address: hoge@gmail.com
Password:
Password (again):
Superuser created successfully.
Installing index for auth.Permission model
Installing index for auth.Group_permissions model
Installing index for auth.User_user_permissions model
Installing index for auth.User_groups model
Installing index for auth.Message model
No fixtures found.
manage.pyからのDB接続をして内容の確認
$./manage.py dbshell
SQLite version 3.3.6
Enter ".help" for instructions
実行したSQLの内容を参照できます。
sqlite> .dump
BEGIN TRANSACTION;
CREATE TABLE "auth_permission" (
"id" integer NOT NULL PRIMARY KEY,
"name" varchar(50) NOT NULL,
"content_type_id" integer NOT NULL,
"codename" varchar(100) NOT NULL,
UNIQUE ("content_type_id", "codename")
);
INSERT INTO "auth_permission" VALUES(1, 'Can add permission', 1, 'add_permission');
INSERT INTO "auth_permission" VALUES(2, 'Can change permission', 1, 'change_permission');
INSERT INTO "auth_permission" VALUES(3, 'Can delete permission', 1, 'delete_permission');
INSERT INTO "auth_permission" VALUES(4, 'Can add group', 2, 'add_group');
INSERT INTO "auth_permission" VALUES(5, 'Can change group', 2, 'change_group');
INSERT INTO "auth_permission" VALUES(6, 'Can delete group', 2, 'delete_group');
INSERT INTO "auth_permission" VALUES(7, 'Can add user', 3, 'add_user');
INSERT INTO "auth_permission" VALUES(8, 'Can change user', 3, 'change_user');
INSERT INTO "auth_permission" VALUES(9, 'Can delete user', 3, 'delete_user');
INSERT INTO "auth_permission" VALUES(10, 'Can add message', 4, 'add_message');
INSERT INTO "auth_permission" VALUES(11, 'Can change message', 4, 'change_message');
INSERT INTO "auth_permission" VALUES(12, 'Can delete message', 4, 'delete_message');
INSERT INTO "auth_permission" VALUES(13, 'Can add content type', 5, 'add_contenttype');
INSERT INTO "auth_permission" VALUES(14, 'Can change content type', 5, 'change_contenttype');
INSERT INTO "auth_permission" VALUES(15, 'Can delete content type', 5, 'delete_contenttype');
INSERT INTO "auth_permission" VALUES(16, 'Can add session', 6, 'add_session');
INSERT INTO "auth_permission" VALUES(17, 'Can change session', 6, 'change_session');
INSERT INTO "auth_permission" VALUES(18, 'Can delete session', 6, 'delete_session');
INSERT INTO "auth_permission" VALUES(19, 'Can add site', 7, 'add_site');
INSERT INTO "auth_permission" VALUES(20, 'Can change site', 7, 'change_site');
INSERT INTO "auth_permission" VALUES(21, 'Can delete site', 7, 'delete_site');
CREATE TABLE "auth_group_permissions" (
"id" integer NOT NULL PRIMARY KEY,
"group_id" integer NOT NULL,
"permission_id" integer NOT NULL REFERENCES "auth_permission" ("id"),
UNIQUE ("group_id", "permission_id")
);
CREATE TABLE "auth_group" (
"id" integer NOT NULL PRIMARY KEY,
"name" varchar(80) NOT NULL UNIQUE
);
CREATE TABLE "auth_user_user_permissions" (
"id" integer NOT NULL PRIMARY KEY,
"user_id" integer NOT NULL,
"permission_id" integer NOT NULL REFERENCES "auth_permission" ("id"),
UNIQUE ("user_id", "permission_id")
);
CREATE TABLE "auth_user_groups" (
"id" integer NOT NULL PRIMARY KEY,
"user_id" integer NOT NULL,
"group_id" integer NOT NULL REFERENCES "auth_group" ("id"),
UNIQUE ("user_id", "group_id")
);
CREATE TABLE "auth_user" (
"id" integer NOT NULL PRIMARY KEY,
"username" varchar(30) NOT NULL UNIQUE,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL,
"email" varchar(75) NOT NULL,
"password" varchar(128) NOT NULL,
"is_staff" bool NOT NULL,
"is_active" bool NOT NULL,
"is_superuser" bool NOT NULL,
"last_login" datetime NOT NULL,
"date_joined" datetime NOT NULL
);
INSERT INTO "auth_user" VALUES(1, 'hoge', '', '', 'hoge@gmail.com', 'sha1$**********************************', 1, 1, 1, '2010-12-23 19:39:45.831076', '2010-12-23 19:39:45.831076');
CREATE TABLE "auth_message" (
"id" integer NOT NULL PRIMARY KEY,
"user_id" integer NOT NULL REFERENCES "auth_user" ("id"),
"message" text NOT NULL
);
CREATE TABLE "django_content_type" (
"id" integer NOT NULL PRIMARY KEY,
"name" varchar(100) NOT NULL,
"app_label" varchar(100) NOT NULL,
"model" varchar(100) NOT NULL,
UNIQUE ("app_label", "model")
);
INSERT INTO "django_content_type" VALUES(1, 'permission', 'auth', 'permission');
INSERT INTO "django_content_type" VALUES(2, 'group', 'auth', 'group');
INSERT INTO "django_content_type" VALUES(3, 'user', 'auth', 'user');
INSERT INTO "django_content_type" VALUES(4, 'message', 'auth', 'message');
INSERT INTO "django_content_type" VALUES(5, 'content type', 'contenttypes', 'contenttype');
INSERT INTO "django_content_type" VALUES(6, 'session', 'sessions', 'session');
INSERT INTO "django_content_type" VALUES(7, 'site', 'sites', 'site');
CREATE TABLE "django_session" (
"session_key" varchar(40) NOT NULL PRIMARY KEY,
"session_data" text NOT NULL,
"expire_date" datetime NOT NULL
);
CREATE TABLE "django_site" (
"id" integer NOT NULL PRIMARY KEY,
"domain" varchar(100) NOT NULL,
"name" varchar(50) NOT NULL
);
INSERT INTO "django_site" VALUES(1, 'example.com', 'example.com');
CREATE INDEX "auth_permission_1bb8f392" ON "auth_permission" ("content_type_id");
CREATE INDEX "auth_group_permissions_425ae3c4" ON "auth_group_permissions" ("group_id");
CREATE INDEX "auth_group_permissions_1e014c8f" ON "auth_group_permissions" ("permission_id");
CREATE INDEX "auth_user_user_permissions_403f60f" ON "auth_user_user_permissions" ("user_id");
CREATE INDEX "auth_user_user_permissions_1e014c8f" ON "auth_user_user_permissions" ("permission_id");
CREATE INDEX "auth_user_groups_403f60f" ON "auth_user_groups" ("user_id");
CREATE INDEX "auth_user_groups_425ae3c4" ON "auth_user_groups" ("group_id");
CREATE INDEX "auth_message_403f60f" ON "auth_message" ("user_id");
COMMIT;
今日はここまで、次回へ続く