ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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!

    반응형
Designed by Tistory.