[Django] 앱 만들기 : 앱(App) 생성, 뷰(View) 작성, URL 설정



생성한 프로젝트에 앱을 만들고 이 앱을 추가하여 테스트 웹페이지를 작성하고 URL에 접속하여 페이지를 확인하는 테스트를 하고 내용을 정리합니다.

아나콘다에서 장고 환경을 구성한 후, 기본적인 Django 프로젝트를 생성하고 웹서비스를 구동하는 것을 아래 포스트에서 진행했습니다.

https://jackerlab.com/django-introduce-and-first-setting/


프로젝트(Project) 구조

프로젝트가 생성되면 기본적으로 아래와 같은 디렉토리가 생성되고 기본 구조는 아래와 같습니다.

# 디렉토리 구조
Django_test/
  manage.py
  jackerlab_django/
    __init.py
    setting.py
    urls.py
    wsgl.py

ㅇ Django_test/ : 최상위 디렉토리로 단순히 프로젝트 공간입니다.

ㅇ manage.py : Django 프로젝트와 상호작용을 하는 커맨드라인의 유틸리티 입니다. manage.py에 대한 자세한 내용은 django-admin and manage.py 에서 확인할 수 있습니다.

ㅇ jackerlab_django/ : 프로젝트를 위한 실제 Python 패키지들이 저장됩니다. 그리고 프로젝트의 기본이 되는 설정들이 포함되어 있습니다.

ㅇ jackerlab_django/__init__.py : Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일입니다.

ㅇ jackerlab_django/settings.py : Django 프로젝트의 환경 및 구성 설정을 저장합니다.

ㅇ jackerlab_django/urls.py : Django 프로젝트의 URL을 정의하고 저장합니다.

ㅇ jackerlab_django/wsgi.py : Django 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점입니다.

프로젝트의 디렉토리 구조 및 파일에 대한 내용은 다음에 자세히 다룰 수 있도록 하겠습니다.


앱(App) 생성

우선 앱을 생성해 보도록 하겠습니다.

python manage.py startapp [앱 이름]
PS D:\Python_Project\Django_test> python manage.py startapp apps
PS D:\Python_Project\Django_test>

위와 같이 앱을 생성하면 apps 라는 앱 디렉트로가 생성 됩니다.

# 디렉토리 구조
Django_test/
  manage.py
  jackerlab_django/
    __init.py
    setting.py
    urls.py
    wsgl.py
  apps/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

ㅇ apps/__init__.py : Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일입니다.

ㅇ apps/admin.py : 앱에 대한 관리자 사이트에 대한 설정을 하는 파일입니다.

ㅇ apps/apps.py : 앱에 대한 기본 설정 정보를 담고 있는 파일입니다.

ㅇ apps/migrations/ : 데이터베이스 파일을 보관하는 디렉토리 입니다.

ㅇ apps/models.py : 모델에 대한 정보를 정의하고 저장하는 파일입니다. 테이블을 생성하고 테이블의 필드가 정의된 파일이라고 볼 수 있습니다.

ㅇ apps/tests.py : test case를 다루는 파일입니다.

ㅇ apps/urls.py : 앱에 대한 url 정보를 설정하는 파일입니다.

ㅇ apps/views.py : 앱에 대한 뷰를 설정하는 파일입니다.

생성한 앱(Apps)의 디렉토리 구조 및 파일에 대한 내용은 다음에 자세히 다룰 수 있도록 하겠습니다.


뷰(view) 작성 및 URL 호출

# apps/views.py

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

생성한 뷰를 호출하기 위해서는 연결된 URL이 있어야 합니다. 이를 위해서는 URLconf가 사용되는데 apps 디렉토리에 urls.py를 생성하여 다음과 같은 코드를 작성 합니다.

# apps/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

이제 최상위 URLconf에서 apps.urls 모듈을 바라보게 설정을 해야 합니다.

jackerlab_django/ 프로젝트 경로에 있는 urls.py에 apps.urls을 인식할 수 있도록 다음과 같은 설정을 해주어야 합니다.

# jackerlab_django/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('apps/', include('apps.urls')), # 해당 라인을 추가
]

위와 같이 기본적인 코드(admin url 설정 등)가 존재하고 여기에 /apps 주소에 대해서는 apps.urls을 바라보도록 설정을 해준 것입니다.

include() 함수는 다른 URLconf들을 참조할 수 있도록 해주고 Django가 함수 include()를 만나게 되면 설정된 url(/apps) 뒤의 url들에 대한 처리를 위하여 app.urls.py인 URLconf로 전달하는 역할을 합니다.

기본적으로 URL관련한 구조를 살펴보면 localhost:8000/apps의 경우
1. urls.py(jackerlab_django/urls.py)의 설정을 확인하고 여기의 /apps 설정에 따라
2. apps/urls.py를 바라보게되고
3. apps/urls.py의 URL 설정에 따라 동작을 하게 됩니다.

구동된 웹사이트에 접속을 하고 위에서 url 설정을 해준 주소(/apps)로 접속을 하면 정상적으로 view가 표시되는 것을 확인할 수 있습니다.

뷰에 대한 자세한 내용은 다음에 다룰 수 있도록 하겠습니다.

여기까지 프로젝트에 앱을 생성하고 뷰와 URL을 설정하여 앱의 사이트 페이지를 만들어서 접속하는 것까지 진행하였습니다.


참고 사이트

https://docs.djangoproject.com/ko/2.1/intro/



1 thought on “[Django] 앱 만들기 : 앱(App) 생성, 뷰(View) 작성, URL 설정”

Leave a Comment