개발일지 <내일배움캠프> 20230414 TIL

임재훈·2023년 4월 16일
0

try , except

파이썬에서 에러가 발생했을때 사용하기 좋은 문법을 알고는 있었지만 사용하기에는 힘들었다

이번에 프로젝트를 진행하면서 게시글 리스트를 만드는 역할을 맡게됐는데 페이징처리를 하면서
드디어 한번 사용해봤다

일단 페이징처리 자체도 엄청 힘들었지만 오류를 만나가면서 더욱 힘들어졌던거같다

코드를 입력#게시글 리스트
def posting_list(request, category=None):
    if category:
        # 모델에서 choices 옵션으로 정의한 값('codereview')으로 필터링합니다.
        posting_list = Posting.objects.filter(
            category=category.lower()).order_by('-create_at') # 카테고리별로 시간 내림차순 정렬
    else:
        posting_list = Posting.objects.all().order_by('-create_at') # 전체보기 시간 내림차순 정렬

    paginator = Paginator(posting_list, 6)  #게시글 6개가 1페이지
    page = request.GET.get('page')
    page_obj = paginator.get_page(page) 
    try: # try except 문 사용해서 오류코드가 나왔을때도 작동되게 함
        posting_list = paginator.page(page)
    except PageNotAnInteger: #페이지가 범위를 넘어가면 1번 페이지
        posting_list = paginator.page(1)
    except EmptyPage: # 없는페이지를 보일때 마지막 페이지를 보임
        posting_list = paginator.page(paginator.num_pages)

    context = {
        'title': 'LIST',
        'posting_list': posting_list,
        'category': category,
        'page_obj' : page_obj
    }

    return render(request, 'posting/posting_list.html', context)하세요
    

위랑 같이 try 를써서 PageNotAnInteger 정수말고 다른 페이지를 만났을때 문자열과 같은 페이지를 입력받았을때 나오는 오류를 만나면 1번 페이지를 보이게 했다

EmptyPage 없는 페이지를 만났을때는 마지막 페이지를 보여주게 만들개 했다

0개의 댓글