Django 簡単なサンプル

環境はPython2.5 + Django version 1.0で作成。
DjangoGoogle App Engineでも採用されているので人気もあるみたいです
さて今回は簡単な掲示板アプリを作成します。

プロジェクトの作成(startproject)

python django-admin.py startproject simple_note

アプリケーションの作成(startapp)

cd simple_note
python django-admin.py startapp pad

server起動

python manage.py runserver 0.0.0.0:8000

「It work!」が表示されればOKです

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"

DBへの反映:テーブルの自動生成

python manage.py syncdb

mysql -uroot -ppassword dj_simple_note

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 Note

urlpatterns = 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

各テンプレートは別記します

PHP4 オブジェクト指向でモデル作成

<?php

class BaseModel {

  var $id="";
  var $name="";
  
  // php4
  function model1 ($name=null){
      //echo PHP_VERSION; 

      $this->name= $name ;
  }


  function __construct ($name=null){
      $this->name= $name ;
  }

  function speak ($word){
      echo $word ;
  }

  function cry (){
  }

  function move (){
  }

  function read_all (){
      $sql ="select * from base"; 
      return $sql;
  }
  
  
}


?>
<?php

require "base_model.php";

class model1 extends BaseModel{

  //var $id="";
  var $name="";
  var $age="";
  var $sex="";
  var $weight="";
  

  function read_all (){
      $sql ="select * from items"; 
      return $sql;
  }
  
  
}


?>
<?php
require "model1.php";

$m = new model1("suzuki");
echo "<br>";

$m->speak("hello");
echo "<br>";
print_r($m);

echo "<br>";

  echo $m->read_all();

?>

Fedora3 設定その1:Samba

訳在ってFedora3の設定を修学しないとならないことに
かなり古いバージョンなのですが

Samba


# 確認
chkconfig --list | grep smb

# runlebel=3,5で起動設定します
chkconfig --level 35 smb on

/etc/init.d/smb restart

# ユーザーパスワードの作成
smbpasswd -a ユーザー名

smb.confの編集

(File: /etc/samba/smb.conf)
/var/www/htmlをWebデータの公開ディレクトリとしますので編集が出来る様にしました
また、ユーザーホームにアクセスできるようにしました
[www_html]
comment = Web Server HTML
path = /var/www/html
guest ok = yes
writable = yes

[homes]
comment = Home Directories
browseable = no
writable = yes

Rails勉強会

(書籍:RailsによるアジャイルWebアプリケーション開発 第2版)

 11章 ユーザー(セッション、ログイン、アクセス権限フィルター、動的ファインダー)
 12章 XMLフィード生成
 13章 ユニットテスト、機能テスト、結合テスト