/ PYTHON

Python(1) - Django 설치

Python 관련 포스팅

1. Django 설치

$ python -m pip install Django입력
설치 끝나면, django-admin 명령을 쓸 수 있음
$ django-admin 입력시 사용 가능한 서브 명령이 출력됨

2. Project 시작

2-1. project 생성

$ django-admin startproject [project 이름]
→ 현재 디렉터리에 project파일이 생성되고 그 안에 같은 이름의 project파일이 생김
또는,
$ django-admin startproject [project 이름] .
→ 현재 디렉터리에 project파일이 생성됨

2-2. project 파일 구성

  • myproject 폴더
      myproject/
          manage.py
          myproject/
              __init__.py
              asgi.py
              settings.py
              urls.py
              wsgi.py
    

    urls.py파일
    → 사용자가 접속하는 path에 따라 그 요청 처리를 지정(routing)

3. Django 실행

3-1. manage.py를 이용

$ python manage.py입력시 사용 가능한 서브 명령이 출력됨
(※ 반드시 현재의 디렉터리가 project폴더인지 확인하기!)

$ python manage.py runserver 입력
→ 8000번 포트에서 서버가 성공적으로 열림
(※ python 개발 서버는 기본적으로 8000번 포트에서 리스닝)

3-2. 서버를 끄고 싶다면,

ctrl + c 입력

3-3. 포트 번호를 바꾸고 싶다면,

$ python manage.py runserver [바꿀 포트 번호] 를 입력

4. Application 설치

4-1. django-admin startapp [app 이름]

4-2. app 파일 구성

  • myapp 폴더
      myapp/
          migrations/
              __init__.py
          __init__.py
          admin.py
          apps.py
          models.py
          tests.py
          views.py
    

5. Routing

5-1. [project]/urls.py 설정

→ 큰 틀의 라우팅은 [project]/urls.py 에서 지정

  • myproject/urls.py
      from django.urls import include, path
    
      urlpatterns = [
          path('', include('myapp.urls'))
      ]
    

    urlpatterns 정의(routing 관련 정보를 기록)
    path() 를 이용해 url을 넣어줌
    path('접속 경로/', include('연결할 app.urls'))
    include(): import 필요

→ user 접속시 myapp.urls 로 연결

5-2. [app]/urls.py 생성 및 설정

  • myapp/urls.py
      from django.urls import include, path
    
      urlpatterns = [
          path(''),
          path('create/'),
          path('read/1/')
      ]
    

    → user가 각 경로로 접속했을 때, views.py로 전달
    views.py: client로 정보를 전달할 함수 작성(index, create, read)

  • myapp/views.py
      from django.http import HttpResponse
      from django.shortcuts import render
    
      # Create your views here.
      def index(request):
          return HttpResponse('Welcome!')
    
      def create(request):
          return HttpResponse('Create!')
    
      def read(request):
          return HttpResponse('Read!')
    

5-3. [app]/urls.py 수정
→ 사용자가 기본 포트로 접속 시, myapp/views.py의 index 함수를 실행하도록 수정
views.index import

  • myapp/urls.py
      from django.urls import path
      from myapp import views
    
      urlpatterns = [
          path('', views.index),
          path('create/', view.create),
          path('read/1/', view.read)
      ]
    

    cf.) path('read/1/', view.read) 에서 1이 바뀔 수 있는 숫자라면, <>를 이용해 작성

    • myapp/urls.py
        path('read/<id>/', views.read)
      

      views.py의 read()가 해당 인자(id)를 받아서 처리

    • myapp/views.py
        def read(request, id):
            return HttpResponse('Read!'+id)
      

<routing 정리>

  1. user가 read/1 경로로 접속시
  2. myproject/urls.py로 감
     urlpatterns = [
         path('', include('myapp.urls'))
     ]
    
  3. myapp/urls.py로 위임
     path('read/<id>/', views.read)
    

    위 코드에 걸림

  4. myapp/views.py로 위임
     def read(request, id):
         return HttpResponse('Read!'+id)
    
  5. read() 함수실행
  6. client에 반환 값 전송