[ 프로젝트 BEP ] 최종장 - 엔지니어로서의 마인드셋에 대해 : 우수한 엔지니어는 누구이고, 가져야할 마인드 셋에 대해

이미지
  들어가면서 이제 2025년도 얼마 남지 않은듯 하다.  조금 길어질 수도 있기 때문에  실제로 업로드 하는 것은 새해 이후가 될 가능성도 있으나  올해는 이 글로 마무리 해보려고 한다. 이제 이 최종장을 끝으로 이 프로젝트를 다소 마무리 할 수 있을 것 같다. 물론 전체적으로 글 자체가 부족한 부분이 여려 곳 보이지만,  이는 천천히 개선하기로 하고 일단 마무리를 잘 지어보려고 한다. 이 프로젝트의 목표는 어디까지나 주니어 엔지니어(넓은 범위로서)에게  도움이 될 수 있는 부분을 정리해 놓은 것 이며, 이를 전달하는 것에 주력을 했다. 정확히는 그 사이에 몇 번이나 직장은 바뀌었지만,  내가 다니고 있는 회사에서 작게는 멘터,  크게는 주니어 교육에 활용하기 위한 초안이였다. 들어가기 앞서서 먼저 개발자는 무엇인가에서 부터 시작해서,  수학은 필요한가, 그리고 학위에 대한 이야기를 나누어보았고, 그 다음으로 컴퓨터가 무엇인가에 대해서는,  가장 첫 장인 컴퓨터 개론에서 메모리 손실과 함께 설명하였다. 다음으로는 개발 방법론과 시스템 설계,  그리고 프로그래밍 언어에 대한 이야기로 간단하고 이론적인 이야기를 하였다. 눈치가 빠른 사람은 알 수 있듯이,  현실에서 가질 수 있는 몇 가지 의문으로 시작해서  컴퓨터라는 하드웨어 부터 시작해서,  프로젝트(개발 방법론), 설계, 프로그래밍 언어 순으로  일부러 점점 컴퓨터 세계로 들어가도록 구성을 해 놓았다. 여기서 한 걸음 더 나아가자면, 알고리즘이 들어갈 수는 있겠으나  어디까지나 가볍게 전달하는대에 목적이 있기도 하고,  개인적으로는 당장은 크게 중요하지 않은 부분이 라고 생각 했기 때문이다. 먼저 이 부분에 대해서 좀 더 자세히 이야기해보도록 하자. 시작 부터 모든 지식을 쌓을 수는 없다 이는 개발 영역에서만 해당되는 이야기는 아니지만,  모든 것에는...

[ Django, Python ] mozilla 튜토리얼 예제로 살펴보는 Django 분석 ⑧ : 나만의 추가 도전 과제 - 1

도전 과제는 이전 게시글로서 끝이지만
나는 여기서 한 발짝 더 나가고 싶은 욕망이 생겼다.

그 욕망의 내용은 아래와 같다.


바로 Admin 권한을 가진 User들만 볼 수 있고 사용할 수 있는
Admin Permission 기능이다.

이 기능들은 위의 사진과 같이

빌린 책들의 목록을 보고 수정이 가능한
All borrowed에서 이름을 바꾼 
Borrowed Management와 

모든 책들을 추가, 수정, 삭제할 수 있는 
Book Management

마지막으로
모든 작가들을 추가, 수정, 삭제할 수 있는
Author Management이다.

이런 기능을 구현하기 위해
다음과 같은 프로세스를 거칠 필요가 있다.

Borrwoed Management는 이름만 바꾸면 되고,

Book Management는 
먼저 디폴트 화면은 모든 책의 리스트를 보여주고
이 책의 각각의 요소들을 수정, 삭제가 가능하며
하단에는 추가도 할 수 있는 기능을 제공하게 한다.

Author ManagementBook Management와 동일하게
디폴트 화면은 모든 작가들의 리스트를 보여주고
이 작가들의 각각 요소들을 수정, 삭제 가능하며
하단에는 추가도 할 수 있는 기능을 제공하게 하는 것이 목표이다.

이를 구현하기 위한 Model, View, Template
각각 아래와 같은 솔루션으로 구현한다.

Model : 기존 Model들을 참고

View : 요소 리스트는 Function 기반,
추가,수정,삭제는 제너릭 편집 View 이용

Template : 요소 리스트는 Function 기반이기 때문에
이전 코드 참고

추가, 수정, 삭제는 제너릭 편집 View를 이용 하기 때문에
관련 코드 참고

먼저 All Borrowed를 Borrwoed Management로 바꿔보자.

이는 매우 간단한데,
먼저 catalog/templates/ 경로에 있는 


base_generic.html 파일을 
위와 같이 수정해 주기면하면 된다.

물론 이름이 바뀌면 가급적 
URL 이름을 포함해 관련 함수들의 이름도 
바꿔주어야 하는 것이 가독성 향상에 도움이 되겠지만

이는 시간 상 고려하지 않고 넘어가기로 하겠다.

엔터프라이즈 급의 배포용 애플리케이션이라면 하는 것이 좋을 것이다.


          <!-- <li><a href="{% url 'all-borrowed' %}">All borrowed</a></li> -->
          <li><a href="{% url 'all-borrowed' %}">Borrowed Management</a></li>
          <li><a href="{% url 'manage-book' %}">Book Management</a></li>
          <li><a href="{% url 'manage-author' %}">Author Management</a></li>

이 곳을 수정하는 김에 위와 같이
Book ManagementAuthor Management도 추가해보자.

물론 여기서 화면에 표시되는지 확인해볼 수는 없다.


왜냐하면 아직 Model, View, Template를 작성하고
URL에 추가하지 않았기 때문이다.

이제 본격적으로 기능을 작성해보자.

먼저 Book Management부터 해보자.

Book Management 구현

Model은 이미 만들어져 있기 때문에
만들어야 될 것은 View와 Template 뿐 이다.

선행으로 만들어야 할 View와 Template는
모든 Book List를 보여주는 View와 Template이다.

이것부터 작성해보자.

다만 이 부분은 따로 크게 작성할 필요는 없다.

왜냐하면 이전에 이미 이 관련 코드를 작성했기 때문이다.

따라서 View나 Template는 크게 바뀌지 않아도 될 것이다.

다만, Template의 경우에는 일반적인 User
권한이 있는 User와의 보여지는 것이 달라지기 때문에
파일을 추가해 작성할 필요가 있다.


① View



따라서 각 디폴트 화면(Template)의 View는 
위의 화면과 같이 
기존에 작성되어 있는 제너릭 View를 참고해 사용하면 될 것 같다.


class ManagementBookListView(generic.ListView):
    model = Book
    template_name = 'catalog/manage_book_list.html'
    paginate_by = 5

class ManagementAuthorListView(generic.ListView):
    model = Author
    template_name = 'catalog/manage_author_list.html'
    paginate_by = 5
따라서 위와 같은 제너릭 View코드를 작성할 수 있다.

단, 이번에는 template_name 필드를 정의할 필요가 있는데
이 필드를 추가하지 않으면 Model명을 기반으로 하여
Django가 자동으로 매칭시켜주기 때문이다.

template_name 필드를 정의하지 않을 경우
위의 두 클래스의 경우는 각각 book_list.html과
author_list.html이 매칭될 것이다.

② Template


우선적으로 추가해야할 Template는 
각 기능의 디폴트 페이지 Template이다.

즉, 링크를 누를 경우 나타나며,
추가, 삭제, 수정 했을 경우 리다이렉트될 페이지를 
우선적으로 구현해야 한다.

먼저 모든 책의 목록은 아래와 같이
catalog/templates/catalog/ 경로에


{% extends "book_list.html" %}
manage_book_list.html 파일을 생성하고 
위와 같은 코드를 추가 한다.

여기서 book_list.html 파일은 
이전에 작성했던 모든 책 리스트를 보여주는 Template이다.

동일하게 모든 작가의 목록은 아래와 같이
catalog/templates/catalog/ 경로에


{% extends "book_list.html" %}
manage_author_list.html 파일을 생성하고 
위와 같은 코드를 추가 한다.

여기서 author_list.html 파일은 
이전에 작성했던 모든 작가 리스트를 보여주는 Template이다.

③ URL 


작성한 View를 url에 이어보자.

catalog/ 경로에 


    # Addmin Management URLS
    path('manage-book/', views.ManagementBookListView.as_view(), name='manage-book'),
    path('manage-author/', views.ManagementAuthorListView.as_view(), name='manage-author'),
urls.py 파일에 위와 같은 코드를 추가하자.

④ Test


그렇다면 이제 
정상적으로 작동하는지 확인해보자.

홈 페이지를 확인해보자.

위의 화면과 같이 의도 한대로
Borrowed Management, Book Management, Author Management
가 표시되는 것을 확인할 수 있으며,

위와 같이 전체 책 리스트와 전체 작가 리스트가 
정상적으로 출력되는 것을 확인할 수 있다.

다음은 이 페이지에 추가, 수정, 삭제 기능을 만들면 된다.


이 블로그의 인기 게시물

[ Web ] 웹 애플리케이션 아키텍처 (Web Application Architecture)

[ Web ] 서버 사이드(Sever Side) ? 클라이언트 사이드(Client Side)? 1 [서론, 클라이언트 사이드(Client Side)]

[ Web ] 웹 애플리케이션 서버 아키텍처의 정의 및 유형 ( Define and Types of Web Application Server Architecture )