장고 추가기능 중 카테고리 구현 시 views.py 질문드립니다.
안녕하세요. 점프 투 장고 추가기능 구현 중 막히는 부분이 있어 질문드립니다.
제가 model, sidebar, url을 구성하여 게시판을 실행시키는데 'NoReverseMatch' 오류가 발생하여 질문드립니다.
model.py 및 sidebar.html은 타 질답 게시판을 확인하여 참조하였습니다.
# base_views.py
path('list/<str:category>/', base_views.QnA_main, name="QnA_main"),
path('detail/<int:pk>', base_views.detail, name="QnA_detail"),
또한 제가 작성한 urls.py의 코드는 위와 같으며,
def QnA_main(request, category):
page = request.GET.get('page', '1')
kw = request.GET.get('kw', '') # 검색어
so = request.GET.get('so', 'recent') # 정렬기준
# 정렬
if so == 'recent':
boards = QnaModel.objects.order_by('-created_date')
elif so == 'author':
boards = QnaModel.objects.order_by('author', '-created_date')
else: # popular
boards = QnaModel.objects.order_by('-hits')
#------------------------------------------------------------------------#
# 검색
if kw:
boards = boards.filter(
Q(title__icontains=kw) | # 제목검색
Q(content__icontains=kw) # 내용검색
#Q(author__username__icontains=kw) | # 질문 글쓴이검색
#Q(answer__author__username__icontains=kw) # 답변 글쓴이검색
).distinct()
#------------------------------------------------------------------------#
# 페이징 처리
paginator = Paginator(boards, 10) # 게시글 10개
page_obj = paginator.get_page(page)
context = {'boards': page_obj, 'page': page, 'kw': kw, 'so': so} # page와 search
# boards = QnaModel.objects.all()
return render(request, 'QnA/QnA_main.html', context)
views.py는 위와 같습니다. 오류 발생 전 코드입니다.
해당 오류가 발생하여 해결하고자 views.py를 이리저리 만져봐도 오류의 종류만 달라질 뿐이지 해결되지 않습니다.
오류가 안뜨면 게시글이 뜨지 않고요.
어떤식으로 카테고리 정보를 views.py로 받아와야하나요?
------------------------2021. 01. 15 추가-------------------------------
category = Category.objects.all()
context = {'boards': page_obj, 'category':category, 'page': page, 'kw': kw, 'so': so}
return render(request, 'QnA/QnA_main.html', context)
sssdddsss 님 980
M 2021년 1월 5일 11:05 오전
1개의 답변이 있습니다. 1 / 1 Page
안녕하세요.
다음처럼 URL매핑을 변경하신것 같습니다.
path('list/<str:category>/', base_views.QnA_main, name="QnA_main"),
그러면 view함수에서 리스트로 redirect하는 부분과 템플릿에서 질문 목록으로 링크하는 URL을 모두 category 값을 전달하도록 수정해야 하는데 누락된 부분이 있어서 발생하는 오류로 보입니다.
박응용 님
2021년 1월 4일 3:16 오후