Django 사용기

SamSim·2021년 12월 1일
1

Django

목록 보기
1/2
post-thumbnail

장고를 시작한 계기

우리 단과대학(IT대학)에서는 매년 개인 사물함 신청을 할 때에 사용하는 웹이 있었는데, 어느 선배가 몇년전에 개발한 것을 계속해서 사용하는 중이었다. 비개발자인 학생회 집행부가 매번 서버를 가동하고 운영하기에도 어려워보였었다. 그런데 해당 웹의 파일과 서버가 소실되어서 사물함 웹을 새로 개발할 필요성이 생겼다.
그래서 이 "사물함 신청" 서비스를 만들기 위해서 프로젝트를 시작하게 되었다.

왜 장고야?

앞서 말했듯이 비개발자인 타 과 소속의 학생회 구성원들이 운영하기가 쉬워야한다. 장고는 그런면에서 기본적으로 제공하는 관리자 페이지가 있고 여기서 신청 및 학생 데이터를 관리하라 수 있다. 두번째로, 장고는 파이썬의 프레임워크이다. 알고리즘을 해결할 때도 느꼈지만, 파이썬이라는 언어가 나에게는 편리하게 느껴졌기에(깊게 안파봐서 그런걸 수도 있겠다) 장고를 배워보고 싶었다.

프로젝트로 공부하기

NODE.JS를 공부할 때도 그랬지만, 나는 뭔가를 만들어보면서 공부하는게 효율적이라 생각한다. 공식문서나 먼저 프레임워크를 공부하신 분들이 올려놓은 글들, 교재들을 보면서 공부하는 것은 같으나, 그분들이 작성해놓으신 예시 코드를 그대로 따라하는 것과 참고 및 응용하여 내 프로젝트에 맞게 적용해 보는 것은 다르다고 생각하였고 후자가 나중을 위해서는 훨씬 좋다고 생각했기 때문이다.

그래서 탄생한 프로젝트가 바로 이것이다 사물함 서버

장고 첫인상

장고의 첫인상은... "다 갖춰져 있다" 였다. startapp명령어를 하나 눌렀을 뿐인데 파이썬 파일들이 쫙쫙쫙 깔리더니 그에 맞춰서 코드를 작성하기만 하면 됐다. 물론 지금은 그 속에서도 내가 해줄 것이 많은 것을 체감한다.

장고 걸음마 떼어가기

지금까지 해본것

MySQL DB연결하기

장고를 처음 시작하면, sqlite가 자동으로 연결되어있다. sqlite를 사용하기에는 사물함 서버가 동시에 처리해야할 데이터의 양이나 저장해야할 용량이 이에 맞지 않고 또한 내가 sqlite를 배워본적이 없어 mysql(AWS RDS)를 연결해 주었다.

이런식으로 보안을 위해서 따로 database.py 파일을 만들어서 import한 후 값을 넣어주는 방식으로 적기만 해주면 끝!(gitignore에 database.py파일 추가는 덤) node.js로 프로젝트를 할 때에 json파일로 보안을 유지했던 것을 응용해 보았다.

커스텀 유저모델 만들기

https://dev-yakuza.posstree.com/ko/django/custom-user-model/
이 게시글을 응용하였다.
기본적으로 django가 유저모델을 지원하기는 하나, 학생 데이터를 유저 정보에 넣어주어야 했기에 별도로 만들어 주었다.(github에 퍼블릭으로 해 두었으니 한번 봐보시기를)

로그인 기능 만들기

점프 투 장고에 나와있는 auth_views.loginview를 이용하였다. 미리 만들어둔 커스텀 유저모델이 기본 유저 모델로 인식되어 로그인이 가능하다.

이것들이 지금까지 해본 것들이고, https://www.notion.so/amuguna1mandeum/IT-28e22b4b568543d7ade823bcc97bcead notion에 개발일지를 작성하며 해가는 것들을 정리중이다.

장고의 특징(이라 쓰고 내가 느끼는 장점이라 한다)

html에 파이썬 코드를?

{% %}를 이용해서 파이썬 코드?를 템플릿에 넣어놓고 이를 render하면 실행되어 view로 나타난다. 이 것이 제일 신기했던 경험이 아닐까 느껴진다.

모델

웹에서 사용할 데이터베이스 entity를 model로 작성한다. 그저 model을 작성하고 makemigrations/migrate명령어를 치면 알아서 데이터베이스에 적용해준다! 직접 쿼리를 작성하고 적용할 필요가 없는 것이 너무나도 편하고 장점으로 여겨졌으며, 데이터베이스에서 데이터를 가져오는 것 또한 model을 이용하여 query없이 간편하게 view에 표시해 줄 수 있었다.

관리자 페이지

superuser를 터미널에서 만들어주면, 해당 계정을 통해서 관리자 페이지에 접속이 가능하다(기본 생성) 앞서 말했지만 이 페이지를 통해서 웹 내의 데이터들을 간편히 관리할 수 있어서 너무 좋은듯 하다

하면 단점이 없는 것도 아니다.

단점

너무 다 갖춰져있다.... 이게 장점이기도 하지만 마음대로 커스터마이징 하는데에 제약이 있다고 느껴졌다. 프레임워크라는 것이 기본적으로 제약이 있기는 하지만, 장고 같은 경우는 대다수 사람들이 말하는 것처럼 타 프레임워크들에 비해서도 제약이 있다.
또한 공식문서가 한국어 번역이 제대로 안되어있다. 되다 말았다. 한국어로 언어 선택을 하여도 영어로 표시되는 부분들이 꽤나 많아 어려움이 있고, 되어있는 번역 조차도 완벽하지 않다. (읽다가 한국말이지만 이게 무슨말이지?하는 부분들이 꽤나 많다) 영어를 나름 그래도 자신있어 했는데, 용어가 용어다보니 해석이 꽤나 힘들었다.

갈무리

아직 장고를 시작한지 한달도 안되어 이 정도가 지금까지 해오고 또 느낀 점들이다. 너무 사소해서 안 쓴 이야기도 많지만, 그런 내용은 노션과 깃허브에도 정리해 두었으니 봐주시면 감사하겠다. 글 쓰는 재주가 좋지 않아 할 이야기를 제대로 정리하지 못한 듯 한데, 기술적인 부분들은 내가 참고하였듯이 많이 이미 정리 되어있기에 내가 다루지는 않고, 참고한 링크들을 프로젝트 진행 중에 올리며 "이런 문제가 발생하면 요런걸 찾아보세요~" 라고 올릴 예정이다. 또 프로젝트 결과물에 대한 게시글도 올릴 예정이다.
혹시 나와 같이 장고를 공부중인 분들이 계시다면, 노션 개발일지깃허브를 자주 봐주시면 감사하겠습니다아(이 부분만 존댓말인건 안비밀)

profile
개발새발

0개의 댓글