Python > Djangoの基本

Djangoの基本

セットアップ

$easy_install django

プロジェクトの作成

mysiteというプロジェクトを作成する。

$django-admin.py startproject mysite

現在のディレクトリにmysiteというディレクトリと以下のファイルが生成される。

  • __init__.py
  • manage.py
  • settings.py
  • urls.py

アプリケーションの作成

プロジェクトディレクトリ(mysite)内で、以下を実行

$python manage.py startapp myapp

mysite内にmyappディレクトリおよび以下にいくつかのファイルが生成される。

開発Webサーバの起動

mysite内で以下を実行

$python manage.py runserver 0.0.0.0:8000
  • 動作確認 ブラウザでhttp://0.0.0.0:8000 で"It worked!"と表示されればWebサーバは動作している。

文字列の表示

修正するファイル

  • mysite/settings.py
  • mysite/urls.py
  • mysite/myapp/views.py

mysite/settings.py

myappアプリケーションを読み込むことを指定するため、INSTALLED_APPSに追記。

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'mysite.myapp'
    # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)

mysite/urls.py

以下を追記。URLのトップにおいて、myapp.viesモジュールのindex関数を呼び出すように設定している。

urlpatterns = patterns('',
    (r'^$', 'myapp.views.index'),                       
)

mysite/myapp/views.py

以下を追記。Hello Djangoとプレーンテキストで表示される。

from django.http import HttpResponse
def index( request ):
    return HttpResponse( 'Hello Django' )

HTMLの表示

テンプレートの作成

テンプレートディレクトリを mysite/templates とし、 さらに mysite/templates/myapp を作成する。 その中にテンプレートとなる index.html を作成する。 簡易のため、以下を記述する。

<html><body>{{messages}}</body></html>

テンプレートディレクトリの登録

mysite/settings.py の TEMPLATE_DIRSにパスを追加する。

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    'テンプレートへの絶対パス/mysite/templates', 
)

index関数の変更

  • テンプレート変数の定義
    django.template.RequestContext(リクエスト,テンプレート変数の辞書)
    
  • テンプレートファイルの取得
    django.template.loader.get_template(テンプレートファイルのパス)
    
  • 出力
    template.render(コンテキスト・オブジェクト)
    
from django.http import HttpResponse
from django.template import loader,  RequestContext
def index( request ):
    contexts = RequestContext( request, {
            'messeage': 'Hello Django'
            })
    template = loader.get_template( 'myapp/index.html' )

    return HttpResponse( template.render( contexts ) )

参考文献

  • Python入門 2&3対応 (株式会社エスキュービズム,細田謙二,オレンジ岸本,石井光次郎,石川建彦,岡田正彦, 2010, 秀和システム)
最終更新:2011年11月01日 10:00