Django & DRF

[Django] 프로젝트 구축하기

chillcoder 2023. 4. 7. 09:01

Django 프로젝트 본격 구축하기!!

Django 프로젝트 폴더를 만들고 나면 폴더 안에 여러 개의 파일이 생성된 것을 볼 수 있다. (settings.py, urls.py, manage.py 등등)

그러나 실제로 이 프로젝트 안에서 어플리케이션을 구현하는 것이 아니라, app이라는 더 작은 단위를 만들어 그 안에서 구현하게 된다.

이 때, 여러 개의 app을 만들어 연관된 로직을 그룹핑하여 관리할 수 있다.

이처럼 Django 프로젝트의 구조를 먼저 살펴보면 대략 아래와 같다.

  1. App 만들기
    • django-admin startapp <app 폴더명>
    • settings.py > INSTALLED_APPS > 생성한 app 추가
  2. Routing 라우팅(경로설정)
    • 어떤 웹 프레임워크를 사용하든 제일 먼저 하는 작업으로, 사용자가 접속한 각각의 경로를 누가 처리할 것인가를 지정하는 것!!
    • 장고에서는 프로젝트 폴더 안에 있는 urls.py가 가장 큰 틀의 라우팅을 하며, 이것을 적당한 app으로 위임을 하고, app이 view안에 있는 특정 def 함수로 위임을 해서 작업을 처리하게 됨.
    • 그럼 다음과 같은 라우트를 처리한다고 가정해보자 :
    1) 프로젝트 폴더의 urls ⇒ app 폴더의 urls 로 위임프로젝트 폴더 안 urls.py 파일을 열어보면 경로 설정과 관련된 가이드가 나와있다.
    • include 함수를 import 목록에 추가
    • urlpatterns 리스트에 path('빈경로', include('<app 폴더명>.urls')) 추가 (빈경로는 http 메인주소 자체를 나타냄. 즉, 접속했을 시 주소 또는 관리자 페이지를 제외한 모든 주소)
    • 이는 사용자가 접속한 경로를 <app 폴더명>.urls 로 연결하라는 뜻이므로
    • 프로젝트 폴더 안의 urls.py 파일 복붙하여 <app 폴더명> 아래 urls.py 파일을 생성
    • 이렇게 해서 생성한 app 폴더 안의 urls.py 에서 구체적인 하위 경로들을 설정해주게 된다.
    • 참고로 ‘admin/’은 장고에서 기본적으로 제공하는 관리자 페이지임
    2) app 폴더의 urls
    • 복붙한 app 폴더의 urls.py 파일에서 불필요한 내용을 일단 다 지우고, 처리할 각각의 하위 경로들을 일단 추가해준다.
    3) views 내 index 함수 정의
    • index 함수는 클라이언트로 정보를 전송하는 역할을 하는 함수로, 첫 번째 인자로 요청과 관련된 여러 가지 정보가 들어오도록 약속된 객체를 쓴다. 보통 request 라고 명명한다.return 값에는 http를 통해서 응답을 하겠다는 의미의 HttpResponse 라는 객체를 생성해준다. 이 객체는 import 목록에도 추가해야 이용할 수 있다.
    • HttpResponse 의 인자로 클라이언트에게 전송하고 싶은 값을 적는다.
    • 이 index 함수의 return 값이 바로 클라이언트에게 보내주는 정보가 된다.
    4) app 폴더의 urls ⇒ views 로 위임
    • app 폴더 안에 있는 views import 해주기 (from myapp import views)
    • 각 path 의 두번째 인자로 view.<위임함수> 입력하기
    • 이 때 ‘read/1/’ 루트뿐만 아니라, 같은 형태의 루트를 한번에 처리하고 싶을 경우, 1 대신 <id>를 입력.
    • 그리고 views 파일의 해당 def 에도 두번째 인자로써 id를 추가.
  3. 생성한 app 폴더 안에 새로운 urls 파일을 만들려고 하는 것이기 때문에 마지막 부분을 참고하여 라우팅을 할 수 있다.
  1. 생성한 app 폴더 안에 새로운 urls 파일을 만들려고 하는 것이기 때문에 마지막 부분을 참고하여 라우팅을 할 수 있다.