Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
Django)개발 순서 정리(이것도 짧아지지 못한 글...)
#python
3년 전
1,183
2

1. 대략적인 프로젝트 설정

(1) 가상환경 설정(pipenv든 virtualenv든...)하고 django 설치

(2) django-admin startproject config . ( ⃪ 이렇게 하면 Airbnb clone 수업에서 하는 config 만든 다음에 이름 바꾸고 밖으로 꺼내고 하는 작은 수고를 줄일 수 있음)

(3) django-admin startapp 앱이름(복수형으로, core 예외)으로 만들어줌. users는 필수로 하고 그 밖에 필요에 따라 다른 앱 정의. users와 core 필수. 그 밖에 posts라든가 rooms라든가.

(4)config 폴더 안의 settings.py에 위에서 정의한 각 앱들을 등록할 것. 

그리고 마찬가지로 settings.py의 맨 아래에 가서 AUTH_USER_MODEL에 'users.User'를 넣으면 이 앱의 인증 유저 모델을 갈아끼울(?) 수 있음. 이건 굳이 순서는 상관이 없고 나중에 잊어버릴 수 있으니 제일 처음에 해주는 게 좋다. 만약 User가 아니라 다른 이름으로 유저 모델을 정의할 것이라면 그것에 맞춰서 써도 되나 User가 제일 직관적이고 좋을 것이다.

(5) core에서 managers.py 만들고 CustomManager를 만들면 objects에서 create_or_none 같은 걸 추가로 사용할 수 있음. (코드는 에어비앤비 강의 어딘가에서 나옴.)

(6) core에서 models.py에 TimeStampedModel을 만들고 created와 modified(혹은 updated?)를 만들면 타임스탬프가 필요한 다른 모든 앱에서 상속해서 사용가능해서 매우 편리함.

(7) root폴더에 templates 폴더를 만들고 base.html을 반드시 만들고 그 외에 필요에 따라 믹스인 등을 만들 것. (이게 은근히 좀 어려운데 강의 보시면 됨.ㅎㅎ)

2.각 앱 안에서의 개발 순서

(1)models.py에서 model 정의. 보통 한 앱에서 한 모델만 정의하는 게 이상적이고 관리하기 좋으나 매우 연관성이 높거나 따로 떼기엔 살짝 곤란한 모델의 경우 한 models.py에 정의할 것.(강의에서의 Room과 Photo가 대표적) 마이그레이션을 잊지 말기.

(2)있으면 매우 좋은 admin.py를 정의하기.진짜 아무것도 하기 귀찮은데 어드민 페이지가 있긴 해야겠다 한다면 admin.site.register(모델명) 이렇게 하면 아~~주 기본적인 어드민은 사용가능함.

단, 이름 설정을 제대로 안 하면 verbose name의 복수형으로 뜨기 때문에 한글로 해 놓으면 룸s 라든가 사진s 이런 식으로 뜰 수 있으므로 모델 정의할 때 class Meta에 verbose_name_plural을 정의하자.

(3)각 앱에 forms.py 만들기.

여기에서 로그인 폼이라든가 Signup폼, Create뭐시기폼 등, 장고 웹앱 화면에서 필요한 폼을 정의하기. 이걸 먼저 하는 이유는 Views.py에 들어가기에.

(4)다음으로 views.py 정의.

여기에서 Class Based View(통칭 CBV)로 하느냐 Function Based View(통칭 FBV)로 가느냐 갈린다. 장고매직을 사용하느냐, 더 개발자 맘대로 세세하게 정의가 가능한 FBV로 가느냐.

CBV로 갈 경우 이 사이트 가 매우 유용하다.

ccbv 글씨 클릭하면 새 창으로 열릴 것임.아마도.

(5)views.py에서 경우에 따라 이미 Django에서 정해놓은 규칙에 따른 파일명으로 템플릿을 사용하기도 하지만 사용자 맘대로 템플릿 파일을 만들고 지정하는 것도 가능.(그러나 개발상 혼란이 올 수 있으므로 웬만하면 규칙적인 명명이 중요함)

(6)template이 만들어지고 views.py의 정의도 됐다면 urls.py에 view의 urls을 등록할 것. 보통 urls.py는 안 만들어져있을 것이므로 본인이 새로 만들어야 함. 꼭 저 이름으로.(그것이 Django라는 Framework의 규칙이다.)

그리고 그 후에 config 폴더의 urls.py에 앱의 url을 등록해야 한다. 왜 이건 나중에 해야 하나면, urls.py를 처음에 만들어놓고 urlpatterns 같은 것만 미리 써놔봤자 하나 이상의 패턴이 있어야 한다며 에러가 나고, config의 urls.py에 앱의 url을 미리 등록해도 마찬가지로 아무것도 없다며 욕을 먹는다.

(7)이렇게 해서 화면까지 연결이 되었다면 CSS로 꾸민다. 강의에서 쓰는 TailwindCSS가 강력하다.

끝.

2 comments