장고 추가기능 중 카테고리 구현 시 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 987

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 오후

category 값을 전달하도록 수정하려면 어떻게 작성해야하나요?? context에 담아서 전달하려하니 같은 에러가 반복되네요 list는 임의로 주소수정을 한거라 path를 '<str:category>/' 로 써도 무방합니다. - sssdddsss님, 2021년 1월 4일 4:02 오후 추천 , 대댓글
@sssdddsss님 {% url 'pybo:list' 'qna' %} 처럼 'qna'와 같은 카테고리명을 전달해야 합니다. redirect하는 부분도 마찬가지구요. - 박응용님, 2021년 1월 4일 4:27 오후 추천 , 대댓글
본문에 views.py 수정한 코드 올렸습니다. 해당 코드처럼 수정하면 홈페이지가 에러없이 기능하며 URL값도 잘 변하는데 게시글은 카테고리 값대로 변하지 않고 모든 게시글을 보여주네요.. 혹시 pybo는 url 매핑을 어떤식으로 수행했는지 볼 수 있을까요? - sssdddsss님, M 2021년 1월 6일 11:56 오전 추천 , 대댓글