#24 View 파일 분리하기
Pybo 에도 슬슬 많은 기능이 추가되면서 pybo.views.py 파일의 크기가 제법 커졌다. 간단한 프로젝트이기 때문에 아직까진 큰 문제가 없지만 더 많은 기능이 추가된다면 한 파일에 너무 많은 함수가 공존하게되어 관리가 어려워질 것이다.
이번에는 views.py 파일을 분리하는 방법을 알아본다.
1. 카테고리별 view 파일 생성
먼저 views.py 에 몰아넣어놨던 함수들을 카테고리화하여 별도의 파일들에 정의할 것이다. 현재 pybo/views.py 에
정의된 14개의 함수들을 다음과 같이 카테고리화 한다.
- base_views.py (기본 관리)
- index
- detail
- qeustion_views.py (게시글 관리)
- question_create
- question_modify
- question_delete
- answer_views.py (답글 관리)
- answer_create
- answer_modify
- answer_delete
- comment_views.py (댓글 관리)
- comment_create_question
- comment_create_answer
- comment_modify_question
- comment_modify_answer
- comment_delete_question
- comment_delete_answer
pybo 디렉토리 내에 views 디렉토리를 생성하여 그 안에 위 카테고리에 따라 함수를 별도의 파일에 정의하고
import 문을 정리해준다.(PyCharm 기준 Ctrl + Alt + O) 원래 같은 디렉토리에 있었던 models.py 나 forms.py
파일의 경우 view 디렉토리 내부로 파일이 이동하면서 상위디렉토리에 위치한 파일이 되었기 때문에
from ..models ~ 와 같은 형태로 import 문을 변경해야한다.
마지막으로 views 디렉토리 내의 __init__.py 에 위와같이 분리한 파일내의 모든 함수를 import 해주는것으로 나머지
코드의 수정 없이도 기존처럼 사이트가 잘 작동한다.
2. views/__init__.py 파일 제거
그런데 위의 방법에는 한가지 중대한 문제가 있다. view의 어떤 함수가 어느 파일에 속해있는지 알 방법이 없다는
것이다. 특정 기능을 수정하기 위해서는 그 기능이 정의된 파일을 찾기위해 views 디렉토리 내의 모든 파일을 열어볼
필요가 생긴다. 이를 해결하기 위해서는 불편하더라도 views 디렉토리의 __init__.py 를 삭제한 다음 뷰 함수들이
호출된 파일들에 직접 import 문을 작성해줘야 한다.
pybo/urls.py 를 위와같이 수정해준다.
config/urls.py 의 index 에 해당하는 매핑도 위와같이 수정해준다.
이제 어느 뷰 함수가 어느 파일에 정의되어있는지 한눈에 알 수 있다.