코깽이의 코딩일기

Django - 첫 번째 장고 앱 작성하기, part 1-2 본문

Django/Django - 튜토리얼

Django - 첫 번째 장고 앱 작성하기, part 1-2

코깽이 2023. 7. 31. 16:30
반응형

이어서 앱 생성하기부터 진행하도록 하겠습니다.


공식문서

https://docs.djangoproject.com/ko/4.2/intro/tutorial01/

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com


1. 포트 관리

 

프로젝트 생성하는 공식문서 마지막 부분에 port에 관한 부분이 있습니다.

지금은 로컬에서 나 혼자 실습하고 진행할 거니 넘어가고 따로 이것에 관해서 글을 작성하도록 하겠습니다.

 

 

앱 작성하기에 대한 내용이 본격적으로 시작하기 전 공식문서에서 전달하는 내용이 있습니다.

프로젝트 vs 앱이라는 내용입니다.

서로에 대한 차이를 확인하고 넘어가는 것이 실습을 진행하는 데에 있어서 좋을 것이라고 생각한 거 같습니다.

간단히 보자면 기능적인 부분을 수행하는 것이 앱이고 앱들이 모인 것이 프로젝트라는 내용인 것 같습니다.

 


앱은 여러 프로젝트에 있을 수 있습니다. 가 무슨 뜻일까?

그런데 맨 마지막 부분에 " 앱은 여러 프로젝트에 있을 수 있습니다. "라는 부분에 약간 궁금증이 생겼습니다.

 

만약 A라는 프로젝트가 존재하고 내분에 B라는 앱이 존재한다면 B라는 앱은 A라는 프로젝트가 아닌 다른 프로젝트에도 존재할 수 있는 것인가?입니다. 단순히 이름만 동일한 것이 아닌 A라는 프로젝트 내부 B라는 앱이 동일하게 존재하는 것인지가 궁금했습니다. 그래서 물어봤습니다.

앱이 여러 프로젝트에 존재하는 것이 Django의 재사용성과 모듈화를 촉진하는 방식이라는 것을 알게 되었습니다. 이것이 Django 생태계에서는 굉장히 흔하고 자주 일어나는 일이었습니다.

 

이 내용에 대한 관한 공식문서가 존재합니다.

공식문서

https://docs.djangoproject.com/ko/4.2/intro/reusable-apps/

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com

사이트를 들어가 보니 튜토리얼 1~7장을 완료 후에 확인해 보는 것이 좋을 것 같아 지금은 넘어가고 튜토리얼에 따라서 진행하도록 하겠습니다.


2. 설문조사 앱 만들기

이어서 startapp을 생성해 보도록 하겠습니다.

아래의 명령어를 실행시켜 주고

# polls 앱 생성
$ python manage.py startapp polls

왼쪽 탐색기를 보시면 mysite라는 프로젝트 안에 polls라는 이름의 폴더가 생성된 것을 확인할 수 있습니다.

현재 제 프로젝트 구성은 실습을 위해서 만들어진 DJANGOSTUDY라는 폴더 안에 가상환경을 위한 myenv와 시작 프로젝트 mysite가 존재하고 시작프로젝트 mysite안에 polls와 mysite라는 폴더가 존재하는 형식입니다.

앞으로 django 실습을 계속해서 진행하다 보면 경로에 대해서 실수가 종종 일어날 것이니 잘 확인해 두는 것이 좋습니다.


3. 첫 번째 뷰 작성하기

녹색 바탕 안에 적힌 것이 경로입니다.

해당 경로의 파일에 코드를 작성해 줍니다.


4. 두 번째 URLconf 생성하기

Django에서 가장 간단한 형태의 View이고 호출하려면 연결해 줄 url이 필요합니다. 이를 위해서는 URLconf가 필요하다고 나와있습니다.

 

언어를 한국어로 설정했지만 영어로 이어서 설명이 작게 적혀있네요.

시작 앱 polls안에 URLconf를 만들라고 합니다. 파일명은 urls.py로 작성을 하라고도 적혀있습니다.

그리고 urls.py에 다음과 같은 코드를 작성하라고 나와있습니다.

시키는 대로 작성을 해주고


5. 세 번째 최상위 URLconf 설정하기

이어지는 단계에서는 최상위 URLconf에서 우리가 작성한 polls안의 urls를 인지할 수 있게 해 주라는 것 같습니다. 여기서 최상위 URLconf는 처음 우리가 시작프로젝트로 작성하였던 mysite안에 있는 urls.py가 최상위 URLconf인 것 같습니다.

해당 파일에 include를 해주고 urlpatterns 리스트 안에 추가해 주라고 하니 아래의 코드와 동일하게 진행해 보도록 하겠습니다.

 

mysite안에 존재하는 urls.py인 것을 다시 한번 확인하고 작성해 주시면 되겠습니다.

"""
URL configuration for mysite project.

The `urlpatterns` list routes URLs to views. For more information please see:
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path("polls/", include("polls.urls")),
    path('admin/', admin.site.urls),
]

주석 안에 내용들은 처음 프로젝트를 생성하면 자동으로 같이 생성되는 것들이고 url.py에 관한 내용들이 적혀있습니다.

우리 지금 실습하는 내용은 Examples - Including another URLconf에 해당되는 거 같습니다.

 

그런데 우리가 작성하기 전에 존재하는 admin에 관한 urlpatterns이 있습니다. 이것은 우리가 실습하는 방식과는 다른 형태로 path가 작성되어 있습니다. 바로 이어지는 내용에 유일한 예외라고 나와있네요.

다른 URL 패턴을 포함할 때마다 항상 include()를 사용해야 한다. 항상이라는 표현이 붙을 정도니 기억하고 넘어가겠습니다.


결과 확인하기

이제 View도 작성했고 호출을 위해서 URLconf도 작성을 완료했으니 한번 확인해 보겠습니다.

네.... Page not found가 저희를 반겨줄 것입니다. 왜냐하면 저희가 View에 관해서 작성을 했지만 이것이 시작 페이지로 설정을 한 것이 아니기 때문입니다. 현재 최상위 URLconf에서 urlpattern으로 작성된 내용들이 확인 가능합니다. polls/와 admin/ 이 존재한다고 적혀있습니다.

우리가 확인해보고 싶은 것은 polls/views.py에 작성한 내용이니까 주소창 http://127.0.0.1:8000/polls/ 를 입력하고 접속해 줍니다.

 

잘 작동이 되는 것을 확인할 수 있습니다.


Part 1 마무리 전 확인해야 할 내용

이번 실습을 마지막으로 아래의 내용을 확인하고 넘어가면 좋다고 나와있습니다.

kwargs은 튜토리얼에서 제외되었고 그 외의 내용들을 다루는 것 같습니다. 전체적으로 URL을 관한 내용이고 route에 관한 부분은 굉장히 재밌어 보이는 보이는 검색 방법인 것 같습니다.

반응형