-
Django 초간단 게시판 2.start app, Hello World!Python/초간단 장고 Django 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!
반응형