Django 詳細ページの追加
詳細のテンプレート
Webページの次のステップは詳細ページを追加することです。ここでは特定のメンバーに関する詳細を一覧表示できます。
まず、details.html
という新しいテンプレートを作成します。
my_tennis_club/members/templates/details.html
:
<!DOCTYPE html>
<html>
<body>
<h1>{{ mymember.firstname }} {{ mymember.lastname }}</h1>
<p>Phone: {{ mymember.phone }}</p>
<p>Member since: {{ mymember.joined_date }}</p>
<p>Back to<a href="/members">Members</a></p>
</body>
</html>
全てのメンバーをテンプレートに追加
all_members.html
のリストをクリックできるようになり、クリックしたメンバーのIDが記載された詳細ページに移動します。
my_tennis_club/members/templates/all_members.html
:
<!DOCTYPE html>
<html>
<body>
<h1>Members</h1>
<ul>
{% for x in mymembers %}
<li><a href="details/{{ x.id }}">{{ x.firstname }} {{ x.lastname }}</a></li>
{% endfor %}
</ul>
</body>
</html>
新しいビューを作成
次に、views.py
ファイルに新しいビューを作成し、/details/
URLへの受信リクエストを処理します。
my_tennis_club/members/views.py
:
from django.http import HttpResponse
from django.template import loader
from .models import Member
def members(request):
mymembers = Member.objects.all().values()
template = loader.get_template('all_members.html')
context = {
'mymembers': mymembers,
}
return HttpResponse(template.render(context, request))
def details(request, id):
mymember = Member.objects.get(id=id)
template = loader.get_template('details.html')
context = {
'mymember': mymember,
}
return HttpResponse(template.render(context, request))
details
ビューでは次のことが行われます。
- 引数として
id
を取得します。 id
を使用して、Memberテーブル内の正しいレコードを見つけます。- details.htmlテンプレートを読み込みます。
- メンバーを含むオブジェクトを作成します。
- オブジェクトをテンプレートに送信します。
- テンプレートによってレンダリングされるHTMLを出力します。
URLを追加する
ここで、/details/
urlがid
をパラメータとして正しいビューを指していることを確認する必要があります。
urls.py
ファイルを開き、詳細ビューをurlpatterns
リストに追加します。
my_tennis_club/members/urls.py
:
from django.urls import path
from . import views
urlpatterns = [
path('members/', views.members, name='members'),
path('members/details/<int:id>', views.details, name='details'),
]
自分のコンピューターですべての手順を実行した場合は、自分のブラウザーで127.0.0.1:8000/members/
とすると結果を確認できます。
サーバーがダウンしている場合は、runserver
コマンドを使用してサーバーを再起動する必要があります。
py manage.py runserver
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。