Django入門ノート その3

ビューの基本

ユーザーから送られるリクエストに対して処理を行い、結果のコンテンツやレスポンスコードを返す役割をDjangoではビューというものが担っているらしい。
ビューはPythonの関数として定義すれば良くて第1引数にはリクエストオブジェクトを受け取る。
つまりDjangoサイトの特定のURLにアクセスがあったとき、そのURLに対応したコンテンツやレスポンスコードを返すビューが呼ばれるように設定すれば良いってことですね。
そしてURLとビューの対応はURLconf(urls.py)で設定すれば良いわけか。
ではテストのビューをプロジェクト直下に書いてみる。
test_view.py

#! /usr/bin/env python

from django.http import HttpResponse

def hello(request):
    message = "<html><body>Hello, Django!</body></html>"
    return HttpResponse(message)

def get_form_data(request):
    text1 = request.GET['text1']
    text2 = request.GET['text2']
    return HttpResponse('text1=%s, text2=%s' %(text1, text2))

importしているHttpResponseはコンテンツを伴う通常のHTTPレスポンスを表すクラスで、コンテンツを与えてレスポンスオブジェクトを生成すれば良いみたい。
ビューの引数で受け取るリクエストオブジェクトからはユーザーから送信される情報にアクセスできる。
GETメソッドで送信されたデータの取得の仕方もPHPなんかに慣れてるとわかりやすいですね。

次は書いたビューに対応するようにプロジェクトを作成したときにできたurls.pyを設定します。

from django.conf.urls.defaults import *
from test_view import *

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Example:
    # (r'^project/', include('project.foo.urls')),
      (r'^greet/$', hello),
      (r'^formdata/$', get_form_data),

    # Uncomment the admin/doc line below to enable admin documentation:
    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # (r'^admin/', include(admin.site.urls)),
)

定義したビューを参照できるようにimportしておいて、URLに対応する各ビューをタプルにして設定するんですね。
URLパターンには正規表現が使用できると。わかりやすいですね。