Python/초간단 장고 Django

Django 초간단 게시판 2.start app, Hello World!

컴닥 2021. 5. 26. 23:49
반응형

1. start app

파이참의 터미널 창에서 python manage.py startapp board 를 실행합니다.

(venv) C:\PyProjects\djangoBBS>python manage.py startapp board

파이참의 프로젝트 창에 board 디렉토리가 생성되었다. 

 

2. 앱을 만들었으면 config에 앱을 등록해야 한다. 

앱 설치시 자동 등록되지 않으며,
이 작업을 하지 않으면, 
migration 되지 않는다. 

# config/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'board.apps.BoardConfig',  # 'board'라고만 해도 작동하나 
]                              # 프로젝트가 커 질 경우 오작동의 우려가 있다. 

board/apps.py 에 BoardConfig class 를 의미한다. 
확인해 보자. 

 

등록하면서 시간 설정도 같이 해주자. 
언어 설정도 바꿀 수 있지만
영어가 편해서.. 

 

# config/settings.py

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_L10N = True
USE_TZ = True

 

4. confg 와 board 폴더의 파일 구조. 그리고 MVT

전에 장고 강의에서 설명한
MVT 구조를 떠올려 본다. 

* 모델 = DB에 관련된 무엇... 
* 컨트롤러 = 장고 프레임워크
* 뷰 = 뷰 파일
템플릿 = 아직 없다. 
* urls는 url 요청과 뷰의 연결 설정을 담당한다. 

이것이 장고의 큰 틀이다. 

 

5. Hello World

hello라는 뷰 함수를 만들어 url에 연결합니다. 

 

* 먼저 urls.py를 분리합니다.

구조가 복잡해지면, 앱 별로 url 관리를 하는 게 편합니다.

# config/urls.py

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

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

url의 ''(루트)와 board 디렉토리의 urls.py 파일이 연결되었다. 

 

* board 디렉토리에 urls.py 파일을 작성하자.

views.py 파일을 urls.py에 import 해야,
views.py의 hello 함수의 url을 작성할 수 있습니다. 

# config/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('hello', views.hello),
]

'hello'에 접속을 하면
views.hello (views.py의 hello 함수)를 실행하라.
라는 패턴을 만들었습니다. 

urls.py를 url 라우터라고도 합니다. 

 

* 마지막으로 views.py에 hello 함수를 작성하자. 

from django.http import HttpResponse


def hello(request):
    return HttpResponse('Hello World!')

 

이제 1편에서 설명한 runserver를 하면 다음 화면을 볼 수 있다. 

초기 설치시 장고에서 자동으로 보여주던
인덱스 화면은 사라지고
등록된 URL 리스트를 보여준다. 

인덱스 페이지를 작성하지 않았기 때문에....

http://127.0.0.1:8000/hello 에 들어가면
hello world를 볼 수 있다. 

화면은 생략하자.. 

 

URL에서 변수 사용

만약 URL에 변수가 필요하다면
ulrs.py에서 <변수>를 사용한 뒤,
이를 뷰 함수에 전달할 수 있다.

'name'이라는 변수를 hello 뷰 함수에 전달해 보았다. 

# board/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('hello/<str:name>', hello),  # <변수> 추가, 문자열을 처리해야 한다면 str을 명시하는 것이 더 좋다. 
]
# board/views.py

from django.http import HttpResponse

def hello(request, name):  # 변수 받음
    return HttpResponse(f'Hello {name}!')

http://127.0.0.1:8000/hello/poo

Hello poo!

반응형