회원가입

[리팩토링] 13. (4) board 함수 리팩토링 게시판 View 불필요 코드 제거

Beany 2024-06-30

  AS-IS Code

def get_board_set_from_board_group(request, board_group_id):
    ...완료!!!

def home(request):
    ...완료!!!

def board(request, board_url):
    ...이번장!!!

def post_detail(request, board_url, pk):
    ...

def reply_write(request, board_url, pk):
    ...

def rereply_write(request, board_url, pk):
    ...

def reply_delete(request, board_url, pk):
    ...

def rereply_delete(request, board_url, pk):
    ...

def like(request, board_url, pk):
    ...

[ get_board_set_from_board_group 함수 리팩토링 ]
get_board_set_from_board_group 리팩토링 정보 보기

[ home 함수 리팩토링 ]
home 페이지 성능 개선 Board View 코드 리팩토링
home 페이지 좋아요, 댓글 수 Board View 코드 리팩토링

Board 앱의 View 함수들을 살펴보니 총 9개의 코드가 존재합니다.
하나하나씩 불필요한 코드를 제거하거나 리팩토링해 보겠습니다


 

불필요 코드 제거

모든 코드를 작성하고 리펙토링을 했습니다.

부족한 부분도 있지만 우선 이 정도 리펙토링을 하고, 불필요한 코드 제거 작업을 하도록 하려고 합니다.

from django.urls import path
from .views import *

app_name = 'board'

urlpatterns = [
    ...
    # path('<str:board_url>', board, name='board'), <-- 이거 제거
]

 

아래 코드도 전부 제거 합니다.

# 게시글 목록 (게시판)
def board(request, board_url):
    q = Q()

    board_obj = None
    tag_board = None

    # page:
    # 1 게시판 페이지
    # 2 태그 페이지
    # 3 검색 페이지
    page = 1

    search = request.GET.get('search')

    # 태그 페이지
    if board_url[0] == '_':
        page = 2
        tag_option = board_url[1:]

    # 검색 페이지
    if board_url == 'search':
        page = 3

    if search:
        tag_id_list = Tag.objects.filter(
            tag_name__icontains=search
        ).values_list(
            'id', flat=True
        )

        q = q & Q(title__icontains=search) | Q(body__icontains=search) | Q(tag_set__in=tag_id_list)

    # 게시판 선택
    if page == 1:
        board_obj = get_object_or_404(Board, url=board_url)
        posts = board_obj.post_set.filter(q).order_by(
            '-created_at'
        )
    # 태그 검색
    elif page == 2:
        tag_board = get_object_or_404(Tag, tag_name=tag_option)
        posts = tag_board.post_set.filter(q).order_by(
            '-created_at'
        )
    # 전체 검색
    elif page == 3:
        posts = Post.objects.active().filter(q).order_by(
            '-created_at'
        )

    paging_obj = web_paging(
        posts,
        int(request.GET.get('page', 1)),
        10,
        5,
    )

    context = {
        'posts': paging_obj.get('page_posts'),
        'page_range': paging_obj.get('page_range'),
        'board': board_obj,
        'tag_board': tag_board,
    }

    return render(request, 'board/board.html', context)

 

cwbeany/board/templates/board/board.html HTML 도 제거 합니다.

 

이렇게 해서 길고도 긴 board View 함수 리펙토링이 끝났습니다!!!

 

[ 총 정리 링크 ]

board 함수 리팩토링 설계

board 함수 리팩토링 일반 게시판 View 재구성

board 함수 리팩토링 태그 게시판 View 재구성

board 함수 리팩토링 전체 게시판 View 재구성

board 함수 리팩토링 게시판 View 불필요 코드 제거 (현재 주소)

 

0 0
블로그 일기
제 블로그의 고도화 과정을 설명합니다. 이는 코드 리팩토링과 추가된 기능들에 대해 기록하기 위한 게시판입니다. 어떤 기능이 추가되었는지, 무엇이 개선되었는지 등 고도화되는 과정을 자세히 다룰 예정입니다.
Yesterday: 456
Today: 93