ここではコメントの詳細情報を表示するページを実装します.まず views.py を編集して,データベースから指定したidのコメントを取得するコードを追加します.
comments/views.py
from django.conf import settings
from django.shortcuts import render
from django.shortcuts import get_object_or_404
from django.contrib.auth import authenticate, login, logout
from django.shortcuts import redirect
from django.urls import reverse
from .models import Comment
from .forms import CommentForm
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib import messages
# Create your views here.
...(中略)...
def comments_show(request, comment_id):
if not request.user.is_authenticated:
return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
context = {}
# context['comment_id'] = comment_id
comment = get_object_or_404(Comment, pk=comment_id)
context['comment'] = comment
return render(request, 'comments/show.html', context)
show.html にはコメントの詳細情報を表示する要素と「編集」「削除」のためのリンクを設置します.
{% extends "base.html" %}
{% block title %}
コメント {{ comment.id }}
{% endblock %}
{% block content %}
<h1 class="my-5">コメント {{ comment.id }}</h1>
<div class="card mb-3">
<div class="card-header">
ID : {{ comment.id }}
</div>
<div class="card-body">
<p class="card-text">Title : </p>
<h5 class="card-title">{{ comment.title }}</h5>
<p class="card-text">Body : </p>
<p class="card-text">{{ comment.body }}</p>
</div>
<div class="card-footer">
Owner ID : {{ comment.owner_id }}<br>
Created at : {{ comment.created_at }}<br>
Updated at : {{ comment.updated_at }}
</div>
</div>
<hr>
<div>
<p>
<a href="{% url 'comments:update' comment.id %}">
[ 編集 ]
</a>
<a href="{% url 'comments:delete' comment.id %}">
[ 削除 ]
</a>
</p>
</div>
<ul>
<li>
<a href="{% url 'comments:index' %}">コメント一覧</a>
</li>
<li>
<a href="{% url 'comments:show' 10 %}">コメント詳細</a>
</li>
<li>
<a href="{% url 'comments:create' %}">コメント投稿</a>
</li>
<li>
<a href="{% url 'comments:update' 10 %}">コメント更新</a>
</li>
<li>
<a href="{% url 'comments:delete' 10 %}">コメント削除</a>
</li>
<li>
<a href="/">トップページへ</a>
</li>
</ul>
{% endblock content %}
Web サーバを起動してコメントの詳細情報を表示してみよう.投稿者の ID が表示できていることを確認しよう.
(py39) C:\Users\lecture\Documents\django\django_comment_auth>python manage.py runserver ⏎
Watching for file changes with StatReloader
Performing system checks...
次のページでは,投稿者の ID からリレーションシップを辿ってユーザ名やメールアドレスを表示できるようにしてみよう.