djangoで掲示板作成時、特定のテーマに対するコメントを表示させたいのだが、エラーが出てしまいます。
解決したいこと
djangoで掲示板作成時、特定のテーマに対するコメントを表示させたいのだが、エラーが出てしまう。
発生している問題・エラー
[02/Aug/2022 15:28:56] "GET /boards/post_comments/10 HTTP/1.1" 500 85551
<WSGIRequest: GET '/boards/post_comments/10'>
Internal Server Error: /boards/post_comments/10
Traceback (most recent call last):
File "C:\Users\aruka\anaconda3\envs\djangoenv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\aruka\anaconda3\envs\djangoenv\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\aruka\anaconda3\envs\djangoenv\lib\site-packages\django\views\generic\base.py", line 69, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\aruka\anaconda3\envs\djangoenv\lib\site-packages\django\views\generic\base.py", line 101, in dispatch
return handler(request, *args, **kwargs)
File "C:\Users\aruka\anaconda3\envs\djangoenv\lib\site-packages\django\views\generic\edit.py", line 170, in get
return super().get(request, *args, **kwargs)
File "C:\Users\aruka\anaconda3\envs\djangoenv\lib\site-packages\django\views\generic\edit.py", line 135, in get
return self.render_to_response(self.get_context_data())
File "C:\Users\aruka\OneDrive\デスクトップ\django_exam\FunctionExam\function_project\boards\views.py", line 51, in get_context_data
context['comments'] = Comments.objects.filter(theme_id=self.pk).order_by('id').all()
AttributeError: 'PostCommentsView' object has no attribute 'pk'
[02/Aug/2022 15:32:24] "GET /boards/post_comments/10 HTTP/1.1" 500 85551
該当するソースコード
from django.shortcuts import render, get_object_or_404
from django.urls import reverse_lazy
from django.views.generic.list import ListView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from .models import Themes, Comments
from .forms import CreateThemeForm, PostCommentsForm
from django.http import Http404
from django.contrib.auth.mixins import LoginRequiredMixin
import os
class CreateThemeView(LoginRequiredMixin, CreateView):
template_name = os.path.join('boards', 'create_theme.html')
form_class = CreateThemeForm
model = Themes
def form_valid(self, form):
form.instance.user = self.request.user
form.save()
return super().form_valid(form)
class ListThemeView(ListView):
model = Themes
template_name = os.path.join('boards', 'list_themes.html')
class UpdateThemeView(LoginRequiredMixin, UpdateView):
model = Themes
template_name = os.path.join('boards', 'edit_theme.html')
form_class = CreateThemeForm
class DeleteThemeView(LoginRequiredMixin, DeleteView):
model = Themes
template_name = os.path.join('boards', 'delete_theme.html')
success_url = reverse_lazy('boards:list_themes')
class PostCommentsView(CreateView):
model = Comments
template_name = os.path.join('boards', 'post_comments.html')
form_class = PostCommentsForm
def get_success_url(self):
return reverse_lazy('boards:post_comments', kwargs={'pk': self.object.id })
def form_valid(self, form):
form.instance.theme = Themes.objects.get(user_id=self.request.user.id)
form.instance.user = self.request.user
return super().form_valid(form)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
print(self.request)
context['comments'] = Comments.objects.filter(theme_id=self.pk).order_by('id').all()
return context
自分で試したこと
get_context_dataで値をテンプレートに渡すときに、urlディスパッチで
もらう値を使うためにself.request.idやself.pkといったことを使ってみたが、エラーが出てしまった。
get_context_dataでurlディスパッチを取り出す方法を教えてもらいたいです。
0 likes