The 20 Minute Wiki

このチュートリアルは ビデオ でも見ることができます。もしビデオを見るのに問題があったときは、 VideoHelp? のページをチェックしてください。

セットアップ

このチュートリアルには以下のものが必要です:

1. docutils 0.3.9以上。これはフォーマットに使われます。無くてもよいですが、それではあんまりおもしろくないと思います。

easy_install docutils
  1. ウェブブラウザ
  2. お好みのエディタ
  3. 2つのコマンドラインウィンドウ(一つは 必須 です。でも2つあった方がいいですよ)

5. データベース。もし持っていなかったら、sqlite 3.2+とpysqlite 2.0+を使うのがいいでしょう。

easy_install pysqlite

このチュートリアルではPythonについては全く解説しません。Pythonについてよりよく知りたいなら Pythonのリソース をチェックしてください。

クイックスタート

TurboGears?にはこのチュートリアルで使ういくつかの機能を持ったコマンドラインツールがあります。最初はクイックスタートです:

tg-admin quickstart

あなたはプロジェクトの名前(人間が理解できる短い名前)およびパッケージの名前(Pythonが理解できる短い名前)を入力するように促されるでしょう。このチュートリアルでは、以下の値を利用します:

Enter project name: Wiki 20
Enter package name [wiki20]: wiki20
Do you need Identity (usernames/passwords) in this project? [no] no

これによってカレントディレクトリ以下にいくつかのファイルとディレクトリが生成されます。そこに移動して内容を確認することがきます。

cd Wiki-20

サーバの起動

start-wiki20.py というファイルを見つけられるでしょう。これはビルトインのウェブサーバの起動スクリプトです。起動してみましょう!

python start-wiki20.py

ブラウザで http://localhost:8080/ を見てみると、ちょっとステキなウェルカムページが見えるでしょう。(MacのSafariでBonjourブックマークを有効にしているならば、新しいサーバがそこに見えるはずです!)

とっても簡単!

本当に簡単です。そしてクイックスタートで生成されたコードを見てみると、起動するのにそんなに多くのものが書いてないと言うことがわかるでしょう。2つの興味深いことが見て取れます:

  • wiki20/controllers.py にウェルカムページを生成しているコードがあります。CherryPyがすべてを簡単にしてくれます。あなたはメソッドを書いてそれをexposeするだけです。TurboGearsは値の辞書から自動的にテンプレートを処理してくれます。
  • wiki20/templates/welcome.kid はウェルカムページのテンプレートです。これがいくつかの簡単な名前空間属性を持った標準XHTMLであることに気づきましたか?とてもデザイナーフレンドリーです。ブラウザで直接それを開くこともできますよ!

Wikiを作ろう!

もしWikiについてあまり詳しくないのであれば、 the Wikipedia entry をチェックしてみてください。これはページの生成やリンクを当たり前のように行ってくれる、簡単に編集できるウェブコンテンツシステムです。

TurboGears?は最近のウェブフレームワーク同様、MVCパラダイムに従っています。Kidテンプレートはビューであり、CherryPyクラスはコントローラで、基本的にどんなオブジェクトもModelになり得ます。実際には我々はデータベース駆動の世界にいるのでモデルオブジェクトはSQLObjectになります。

先に進んでページを保存する場所をセットアップしてみませんか?TurboGearsのクイックスタートはモデルクラスを作るのに十分な model.py モジュールを作ってくれました。以下は Page クラスです:

class Page(SQLObject):
    pagename = UnicodeCol(alternateID=True, length=30)
    data = UnicodeCol()

個人的にはできる限り(SQLではなく)オブジェクトで何とかしたいです。SQLObjectはデータベース定義に基づいたオブジェクトの生成をサポートしていますが、私は別の方法、つまりオブジェクトに基づいたデータベース定義を生成する方が好きです。

pagenameに対して alternateID=True を指定しましたが、これはこのカラムがユニークで、pagenameの検索を簡単にしてくれることを保証してくれるでしょう。いくつかのデータベースではインデクスしたいカラムの長さを指定する必要がありますので、ここでは長さを30に指定しています。

Continue on to page 2