ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [파이썬] Django 서버 구동 및 APP, VIEW 생성 방법
    º Language º/Python 2023. 10. 6. 01:26

     

    1. 이전에 만들어 두었던 가상 환경 에서 아래와 같이 서버를 구동합니다.

    (myenv) C:\work\mysite>py manage.py runserver
    Watching for file changes with StatReloader
    Performing system checks...
    
    System check identified no issues (0 silenced).
    
    You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
    Run 'python manage.py migrate' to apply them.
    October 06, 2023 - 01:23:47
    Django version 4.2.6, using settings 'mysite.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CTRL-BREAK.

     

     

    2. 해당 도메인을 복사 붙여넣기 하여 웹에서 확인합니다. ( http://127.0.0.1:8000/ )

    - 아래와 같은 화면이 나온다면 서버가 잘 구동 된 것입니다.

    - 현재 이 서버는 로컬에서 구동이 되는 것으로, 순수 파이썬으로 작성된 웹 서버이기 때문에 개발 목적으로만 사용해야 하며 상용으로 올릴 때에는 Nginx나 Aphach와 같은 웹 서버를 사용해야 합니다.

     


    *  프로젝트 VS 앱 ? 

    - 프로젝트와 앱의 차이점은 무엇일까요?

    앱은 **특정 기능을 수행하는 웹 어플리케이션을 말합니다.

    프로젝트는 이런 특정 웹 사이트를 위한 앱들과 각 설정들을 한데 묶어 놓은 것입니다.

    프로젝트는 다수의 앱을 포함할 수 있고, 앱은 다수의 프로젝트에 포함될 수 있습니다.

    (**특정 기능 예시 : 아이스크림 가게를 차리는데 이 가게를 위한 앱을 만든다면 아이스크림 관리를 위한 관리 앱, 주문을 위한 주문 앱, 이벤트 관리를 위한 이벤트 앱 처럼 특정 기능만 수행하는 앱을 각각만들어서 프로젝트를 수행하는 것입니다. )


     

    3. 앱을 생성합니다. (예시 : polls 앱 생성)

    (myenv) C:\work\mysite>py manage.py startapp polls

    polls 파일 생성

     

    4. 첫 번째 VIEW 를 작성합니다. ( views.py )

    - 앱을 생성했다면 view 코드를 작성해야 합니다.

    - 예시로 index 함수에 작성하였습니다.

    from django.shortcuts import render
    from django.http import HttpResponse
    
    # Create your views here.
    def index(requset):
        return HttpResponse("Hello, world. You're at the polls index.")

     

    5. URL 코드를 작성하여 뷰와 연결합니다.  ( urls.py )

    - 뷰 코드 작성을 완료하였다면, 이 작성한 뷰를 호출하기 위해 URL 코드를 작성하고 뷰와 연결해주어야 합니다.

    - 그런데, polls 파일에 URL 폴더가 없으니 파일을 생성해 줍니다. 

    - urls.py 파일에 아래와 같은 코드를 작성해줍니다. 

    - views.index  :  뷰 내부로 연결하는 모습입니다. (index 함수를 만들어 뒀기 때문)

    from django.urls import path
    
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),
    ]

     

    6. 최상위 URLconf에 우리가 만든 앱의 URL을 연결합니다.  (예시 : polls 앱의 url 연결 ) 

    - 최상위 URLconf에서는 여러 URL을 동시에 관리하고, URL의 PATH에 따른 앱으로 분기를 시켜줍니다. 

    - 최상위 URLconf는 처음 프로젝트 생성시 자동으로 생성되었던 파일 ( 예시 : mysite ) 의 urls.py 내부에 있습니다.

    - 최상위 URLconf 에서 관리를 하게 되고 연결을 위해 코드를 수정하여 작성합니다. ( import include 추가, path 추가)

    - include 함수는 다른 URLconf 를 참조하도록 도와줍니다.

    from django.contrib import admin
    from django.urls import include, path
    
    urlpatterns = [
        path('polls/', include('polls.urls')),
        path('admin/', admin.site.urls),
    ]

     


    흐름 알기 

    1) 127.0.0.1/polls/ 라는 요청이 들어오면 이 URL을 파싱(url을 분해)합니다.

     

    2) 최상위 URLconf (mysite > urls.py)

    path('polls/', include('polls.urls'))  

    - 'polls/' 라는 해당 path를 잡아내고, include('polls.urls') 로 연결을 시켜줍니다.

     

    3) 앱의 URL  (polls > urls.py) 

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

    - 127.0.0.1/polls/ 요청에서 polls/ 이후의 path 경로가 없기 때문에 ' ' , 맨 앞 부분이 공란 입니다.

    - 그런 path 내에서 views.index 라는 뷰 내부로 연결 시켜주는 겁니다.

     

    4) 뷰 내부의 index 함수에서는 "Hello, World  You're at the polls index." 라는 응답을 클라이언트에게 전달해줍니다.

     


     

    7. 서버를 구동하고 확인합니다. ( http://127.0.0.1:8000/polls/ )

    성공

     

Coder yein