はじめてのDjangoアプリ作成(その3)
[ 関連エントリ ]
その1 : プロジェクト作成 & モデル作成
その2 : admin サイトの使い方
その3 : ビュー & テンプレートを作る(照会画面)
その4 : フォームを作る(入力画面)
[ 参考サイト ]
Django ドキュメント → はじめての Django アプリ作成、その 3
――――――――
■ テンプレートファイルの配置場所を決める。
(01) ファイル「settings.py」を編集。テンプレートフォルダの場所を記述する。
import os BASE_PATH = os.path.dirname(os.path.abspath('_FILENAME_')) TEMPLATE_DIRS = ( os.path.join(BASE_PATH, 'templates') )
■ URL構造の設計
(01) ファイル「urls.py」を編集。URLの構造を記述する。
urlpatterns = patterns('', (r'^admin/', include(admin.site.urls)), (r'^polls/$', 'mysite.polls.views.index'), # ★ 追記 (r'^polls/(?P<poll_id>\d+)/$', 'mysite.polls.views.detail'), # ★ 追記 (r'^polls/(?P<poll_id>\d+)/results/$', 'mysite.polls.views.results'), # ★ 追記 (r'^polls/(?P<poll_id>\d+)/vote/$', 'mysite.polls.views.vote'), # ★ 追記 )
(02) ファイル「views.py」を編集。URLアクセス時の動作を記述する。
from django.shortcuts import render_to_response, get_object_or_404 from mysite.polls.models import Poll def index(request): latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5] return render_to_response('polls/index.html', {'latest_poll_list': latest_poll_list}) def detail(request, poll_id): p = get_object_or_404(Poll, pk=poll_id) return render_to_response('polls/detail.html', {'poll': p}) def results(request): # ★ 暫定 pass def vote(request): # ★ 暫定 pass
(03) ファイル「index.html」を作成。テンプレートフォルダ配下に配置する。
{% if latest_poll_list %} <ul> {% for poll in latest_poll_list %} <li>{{ poll.question }}</li> {% endfor %} </ul> {% else %} <p>No polls are available.</p> {% endif %}
(04) ファイル「detail.html」を作成。テンプレートフォルダ配下に配置する。
<h1>{{ poll.question }}</h1> <ul> {% for choice in poll.choice_set.all %} <li>{{ choice.choice }}</li> {% endfor %} </ul>
(05) ブラウザにて「http://localhost:8000/polls/」にアクセス。テンプレートの反映を確認。
(06) ブラウザにて「http://localhost:8000/polls/[存在するpoll_id]/」にアクセス。テンプレートの反映を確認。
(07) ブラウザにて「http://localhost:8000/polls/[存在しないpoll_id]/」にアクセス。404画面が表示されることを確認。