Q&A

책을 따라하다가 막히는 부분이 있나요?
질문을 남겨주세요.

마이페이지 추가질문 드립니다.

2 years ago

taxspoon taxspoon

앞서 질문에 대한 답변 다시 한번 감사드립니다. 


이제 블로그앱의 코드를 변형시켜 아래과 같이 my_page/viws.py 를 작성했습니다.

from django.core.exceptions import PermissionDenied
from django.shortcuts import render
from blog.models import Comment


def my_page(request):
my_comments = Comment.objects.order_by('-pk')[:10]
if request.user.is_authenticated and request.user == my_comments.author:
return render(
request,
'my_page/index.html',
{
'my_comments': my_comments,
}
)
else:
raise PermissionDenied

한편 my_page/urls.py는 다음과 같습니다.

from django.urls import path
from . import views

urlpatterns = [
path('', views.my_page),
]


로그인하지 않은 경우 403에러는 정상적으로 작동하고, 로그인 한 경우에도 아래

and request.user == my_comments.author

조건을 지운 상태에서는 전체 댓글을 보여주는 기능도 잘 작동하는데,

결정적으로 핵심기능인 이 부분을 추가하면 AttributeError 가 발생합니다.

('QuerySet' object has no attribute 'author')

AttributeError 는 속성 오류라고 하던데 이를 어떻게 해결해야 할까요?


taxspoon
taxspoon   2 years ago

해결했습니다 ^^

처음 작성한 코드는 작성한 댓글이 없으면 로그인을 해야한다는 논리적 오류까지 가지고 있는 듯 하여 필터를 사용하였고, 이것저것 시도해보던 중 등호는 한번만 써야한다는 것까지 알게되어 결국 성공했습니다.


좋은 강의 덕분에 공부도 많이 되고 곧 결과물도 나올 것 같습니다. 항상 감사드립니다.

def my_page(request):
if request.user.is_authenticated :
my_comments = Comment.objects.filter(author=request.user).order_by('-pk')[:10]
return render(
request,
'my_page/index.html',
{
'my_comments': my_comments,
}
)
else:
return render(
request,
'account/base.html',
)

Updated: Nov. 11, 2022, 3:43 p.m.

sungyong
sungyong   2 years ago

어떤 사이트를 만드실지 기대가 되네요. 응원하겠습니다. 

Updated: Nov. 15, 2022, 10:36 a.m.

Leave a Comment:
목록보기
Search
  • 자유게시판
  • Q&A