Django 簡単なサンプル
環境はPython2.5 + Django version 1.0で作成。
DjangoはGoogle App Engineでも採用されているので人気もあるみたいです
さて今回は簡単な掲示板アプリを作成します。
DBの準備
データを格納するDB:MySQLを使用します。文字コード:UTF-8です
create database dj_simple_note default character set utf8 ;
settings.pyの編集
データベースの設定をします
ユーザーID、パスワード、DB名、ポートを指定します
DATABASE_ENGINE = 'mysql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'dj_simple_note' # Or path to database file if using sqlite3.
DATABASE_USER = 'ユーザー名' # Not used with sqlite3.
DATABASE_PASSWORD = 'パスワード' # Not used with sqlite3.
DATABASE_HOST = 'localhost' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '3306' # Set to empty string for default. Not used with sqlite3.
アプリケーション名(pad)を追加します
タイムゾーンと言語を日本にあわせます
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'pad',
)
TIME_ZONE = 'Japan/Tokyo'
LANGUAGE_CODE = 'ja'
models.py モデルの作成とDB反映
投稿記事モデルを設定します。記事の項目は(タイトル、本文、投稿日時)とします。
class Note(models.Model):
title = models.CharField(max_length=50)
desc = models.TextField()
created = models.DateTimeField()
class Meta:
db_table= "notes"
url.pyの編集
URLマッピング・ルーティングの定義を設定します
from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib import admin
from django.views.generic.list_detail import object_list,object_detail
from django.views.generic.create_update import create_object,update_object,delete_object
from django.views.generic.simple import redirect_to
from django.template import loader,RequestContext# MODEL
from simple_note.pad.models import Noteurlpatterns = patterns('',
(r'^note/list/*$',
object_list,
dict(queryset=Note.objects.all().order_by('-id'), paginate_by=5)
),
(r'^note/add/*$',
create_object,
dict(model=Note,post_save_redirect='/note/list/')
),
(r'^note/update/(?P\d+)/$',
update_object,
{'model':Note, 'post_save_redirect':'/note/list/', }
),
(r'^note/delete/(?P\d+)/$',
delete_object,
dict(model=Note, post_delete_redirect='/note/list/')
),
)
urls.py を分割したい場合
url.pyはどうしても行数が長くなります。
そんな場合はinclude(path)を使用し別ファイルに分割することができます
(r'^note/', include('simple_note.pad.urls'))
*simple_note/pad/urls.pyが使用されます
テンプレ−トの配置場所
urls.pyの直下にディクトリを作成します、
各テンプレートファイルをtemplates/padの下に置きましょう
TEMPLATE_DIRS = (
"templates",
)
テンプレ−トの作成
表示するそれぞれ画面を作成します。今回は作成するページのテンプレートはは作成しません
以下のような名前にするとテンプレートのファイル名を指定する必要がありません。
もしテンプレート名を変更(既定外に)したい場合はurls.pyで指定できます。
(一覧)note_list.html
(編集・追加共通)note_form.html
(削除確認)note_confirm_delete.html
(詳細)note_detail.html