자유롭게 아무주제로 자신의 의견을 작성할 수 있는 사이트 입니다.
Django를 사용해서 제작했으며, AWS를 사용해서 배포를 했습니다. 또한 Docker를 사용했습니다.
Bootstrap을 사용해서 화면 디자인을 했습니다.
해당 프로젝트에 대한 코드는 아래 링크로 첨부했습니다.
https://github.com/Ysungho/freeColumn
GitHub - Ysungho/freeColumn: 사회에 전반적인 이슈를 다루는 칼럼 글을 등록하는 개인 블로그 입니다.
사회에 전반적인 이슈를 다루는 칼럼 글을 등록하는 개인 블로그 입니다. . Contribute to Ysungho/freeColumn development by creating an account on GitHub.
github.com
해당 프로젝트는 실제 배포까지 했으므로 구현 화면에 대해서는 따로 등록하지 않았습니다.
Write Column
Write Column 최신 뉴스와 흥미로운 정보를 만나보세요!
43.202.127.227
프로젝트 파일 설명
코드에 대한 설명은 요약했지만, Django가 어떤 역할을 하고, 어떤 기법을 사용했는지 간단하게 설명하겠습니다.
장고 작동 과정&각 페이지의 역할
- 브라우저는 과정을 거쳐 go.com이라는 이름의 서버를 찾는다
- 프런트엔드 기술만으로 만든 웹 사이트가 index.html을 요청했던 것과 달리, 우선 urls을 요청해서 개발자가 작성한 내용을 확인한다.
- urls.py에는 go.com 이라는 URL로 접속했을 때 index라는 함수를 실행시키자
- go.com/about_me/ 로 접속했을 때 about_me라는 함수를 실행시키자 와 같은 내용이 포함됨
- urls.py에서 언급하는 함수 또는 클래스는 views.py에서 정의함.
- views.py의 index 함수에는 ‘최근 게시글 5개를 index.html에 채워서 보여준다’ 와 같은 내용이 있음
- delete_post라는 함수가 있다면 ‘게시글을 삭제’ 와 같은 내용이 포함되어 있음
- 게시글(post)에 대한 내용은 models.py에서 정의함
- ‘게시글이 담아야할 정보는 제목, 글 내용, 작성자, 작성일’와 같은 식으로 정의함
- Django에서는 자료의 형태를 정의한 클래스를 모델이라고 함
- models.py에서 정의한 모델에 맞게 데이터베이스에서 필요한 자료를 가지고옴
- views.py의 index 함수가 데이터베이스에서 최근 게시글 5개를 가져오는 기능을 한다면 데이터베이스에서 최근 게시글 5개를 불러옴
- 마지막으로 데이터베이스에서 가져온 자료를 템플릿(index.html)의 빈칸에 채워서 사용자의 웹 브라우저로 보냄
접근 순서
- go.com 접속
- urls.py 확인 (urls.py에서 언급한 함수는 views.py에서 정의)
- views.py 확인
- models.py 접속 (게시글 post에 대한 내용은 models.py에서 정의)
- 데이터베이스 접속 (models.py에서 정의한 모델에 맞게 데이터베이스에서 필요한 내용을 가져옴)
- 가져온 자료를 템플릿(template)에서 보여줌
요약
urls.py 사용자가 어떤 URL형식으로 접근했을 때 어떻게 웹 사이트를 작동시킬지를 정리해 놓은 파일
urls.py는 장고로 개발한 웹 사이트에 방문했을 때 어떤 페이지로 들어가야 하는지 알려줌
settings.py 는 장고 프로젝트의 설정을 담고 있는 파일
URL은 도메인/blog/포스트의 pk/ 로 연결됨
MTV 의미 M model 자료의 형태를 정의 V view 어떤 자료를 어떤 동작으로 보여줄지 정의 T template 웹페이지에서 출력할 모습을 정의
테스트 주도 개발[Test Driven Devlopment, TDD]
💡 개발부터 하는 것이 아니라 개발하려는 항목에 대한 점검 사항을 테스트 코드로 만들고 그 테스트를 통과시키는 방식으로 개발을 진행하는 방법
💡 구현: 만들고 싶은 요소를 직접 떠올리고 소스 코드를 작성
웹 브라우저로 직접 확인: 웹 브라우저로 들어가서 잘 작동하는지 확인
성공: 제대로 작동하지 않으면 다시 소스 코드를 들여다보고 수정하면서 성공
개선점 찾기: 다음에는 무엇을 더 개선해야 할지, 무엇을 개발해야 할지 고민 후 다시 구현
==사용 이유==
단순한 웹 사이트를 만들 때는 위와 같은 방식이 효율적일 수 있다
그러나 모델의 구조가 복잡하고, 기능이 다양하고, 페이지도 많은 웹 사이트를 만들 때는 이런 방식이 더 이상 효율적이지 않다
프로그램이 복잡해 질수록 추가한 기능 사이에 상호 연관성이 점점 늘어나기 때문이다
점검 사항이 점점 늘어나다 보면 웹 브라우저에서 확인하는 과정을 건너뛰게 된다
==결론==
그러다 어떤 문제가 발생했을 때 그 문제가 너무 많은 요소들과 얽혀 있다면 쉽게 손을 댈 수 가 없어 곤란하다
따라서 개발을 한 단계씩 진행할 때마다 정석대로 테스트를 하면 좋다.
TDD 작성 과정
💡 **테스트 코드 작성**
- 만들고 싶은 기능을 점검할 코드 작성
- 아직 기능을 구현하지 않았으므로 테스트 결과는 실패
💡 **기능 구현**
- 테스트 코드를 만족시킬 수 있게 기능 구현
- 테스트 통과를 최우선으로 생각하고 작업
💡 **리팩토링**
- 기능의 성능을 향상시키거나, 재사용성이 좋거나, 가독성이 좋은 코드로 개선
- 테스트 코드로 다시 기능을 점검
코드 구현 방식.
💡 FBV function based view 함수에 기반을 둔 방법. 함수를 직접 만들어서 원하는 기능을 직접 구현
💡 CSV class based view 장고가 제공하는 클래스를 활용해 구현하는 방법
화면 구성
대문 페이지
렌딩 페이지라고도 하는 대문 페이지는 웹 페이지 사이트에 처음 접속할 때 나타나는 일종의 대문 역할을 합니다.
정체성을 표현하는 문구나 이미지를 담고, 함께 일했던 사람들의 평을 담으면서 신뢰도를 높일 수 있습니다.
블로그 페이지
블로그 페이지는 평소에 살면서 느낀 점들을 기록하는 공간입니다.
크게 두가지 요소로 구성됩니다. 블로그의 포스트를 목록 형태로 보여주는 포스트 목록과 페이지를 만들고 그 중에서 방문자가 마음에 드는 포스트를 클랙했을 때 포스트 전체 내용과 댓글ㅇ르 보여주는 포스트 상세 페이지 입니다.
자기소개 페이지
자기소개 페이지는 자신에 대해 소개하고, 그 동안 작업했던 내용을 간단한 이미지와 글로 보여주는 공간입니다.
==Docker 사용 이유==
설정파일에 운영체제, 파이썬 버전, 라이브러리, 소스코드, 이미지 파일 등 웹 사이트 배표에 필요한 환경설정 정보를 모두 지정한다
그리고 도커를 실행하면 도커 설정 파일에서 지정한 대로 서버 전체를 온전히 복제한 컨테이너 이미지가 생성된다.
마지막으로 컨테이너 이미지를 작동시키면 컨테이너가 실행되면서 기존과 동일한 상태로 웹 사이트 서버를 실행한다.
'개발후기 > Django' 카테고리의 다른 글
[Django]지역 사회 마켓 결과 및 후기 (0) | 2023.05.30 |
---|