Lluvia의 보안공부 RSS 태그 관리 글쓰기 방명록
2023-11-23 18:00:26

이번 글에서는 카테고리 페이지를 렌더링하는 부분와 특정 아이템의 상세 페이지를 렌더링하는 부분 설명하도록 하겠다.

 

<category 라우트 함수>

@bp.route('/category/<category>', methods=['GET', 'POST'])
def category(category):
    if request.method == 'POST':
        search_term = request.form.get('search_term')
        items = Item_data.query.filter(
            func.lower(Item_data.name).ilike(f'%{search_term.lower()}%')
        ).all()
    else:
        items = Item_data.query.filter_by(category=category).all()
        search_term = None

    return render_template('category.html', category=category, items=items, search_term=search_term)
  • category 라우트 함수는 카테고리 페이지를 렌더링한다.
  • category 라우트는 카테고리 이름을 동적으로 받아온다.
  • 요청이 POST일 경우, 검색어(search_term)를 받아와 해당하는 아이템들을 검색한다.
  • 요청이 GET일 경우, 해당 카테고리에 속하는 모든 아이템을 가져온다.
  • 검색 결과나 카테고리에 속하는 아이템들을 템플릿('category.html')에 전달하여 렌더링한다.

 

<item_detail 라우트 함수>

@bp.route('/category/<category>/<int:item_id>')
def item_detail(category, item_id):
    item = Item_data.query.get_or_404(item_id)
    return render_template('item_detail.html', item=item)
  • item_detail 라우트 함수는 특정 아이템의 상세 페이지를 렌더링합니다.
  • URL에 포함된 카테고리 이름과 아이템 ID를 받아와 해당하는 아이템을 데이터베이스에서 찾습니다.
  • 만약 해당 아이템이 존재하지 않으면 404 에러를 반환합니다.
  • 찾은 아이템을 템플릿('item_detail.html')에 전달하여 렌더링합니다.

 

이로써 기본적인 기능 구현이 모두 완료되었다.

 

추가적으로 사용자 간의 채팅기능, 직거리 위치 지정 기능 등 을 제작 하고 싶었으나

팀원들의 기량 부족과 시간 부족으로 아쉽게 포기한 기능들이 굉장이 많다.

 

그럼에도 다들 열심히 했고 기본적인 기능이라도 작동하게 되었으니 꽤나 만족하는 프로젝트였다.