본문 바로가기

PYTHON-BACK

Django_tutorial_var1

728x90

Django 파이썬 개발자로 면접을 보고 관련 내용을 공부하던 중 나는 한 번도 Django 공식 문서를 공부해본적이 없는 것 같아서 이 글을 작성하게 되었다.

 

프로그래머로서 공식문서는 반듯이 정독해야 하는 것인데 나는 그 부분을 놓치고 있덨던 것 같다.

이에 이번에 한번 정독하면서 공부해보려고 한다.

 

우선 첫 번째 장고 앱 만들기 part 1 

 

  • 간단한 설문조사(Polls) 어플리케이션을 만드는 과정을 나타난 것으로 두개의 파트로 구성되어 있습니다.
    • 사람들이 설문 내용을 보고 직접 투표할 수 있는 개방된 사이트
    • 관리자가 설문을 추가, 변경, 삭제할 수 있는 관리용 사이트
py -m django --version

 

장고가 설치 되었다면, 설치된  Django 버전을 확인할 수 있다.

만약 설치가 제대로 되지 않았다면, No module named django 와 같은 에러가 발생한다.

 

 

프로젝트 만들기

 

  • 장고를 처음 사용한다면 초기 설정이 매우 중요하다.
  • Django project 를 구성할때 코드를 자동 생성해야하는데 이 과정에서 DB설정, Django를 위한 옵션들, 어플리케이션을 위한 설정들과 같은 Django 인스턴스를 구성하는 수많은 설정들이 생성되기 때문.
mkdir djangotutorial

 

django-admin startproject mysite djangotutorial

 

프로젝트 생성할 때, Python 또는  Django에서 사용중인 이름은 피해야하며, 특히 django(django 그 자체와 충돌이 일어난다.), test(python 패키지의 이름중 하나) 같은 이름은 피해야 한다.

 

 

:djadmin:`startproject`에서 무엇이 생성되는지 확인해보면 다음과 같다.

djangotutorial/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

 

위 파일 내용들 정리해보면 다음과 같습니다.

 

 

django-admin and manage.py | Django 문서

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

  • mysite/: A directory that is the actual Python package for your project. Its name is the Python package name you’ll need to use to import anything inside it (e.g. mysite.urls).
  • 프로젝트의 실제 파이썬 패키지인 디렉토리입니다. 그 이름은 내부에 있는 모든 것(예:mysite.urls)을 가져오기 위해 사용해야 하는 Python 패키지 이름 이다.

 

 

6. Modules

If you quit from the Python interpreter and enter it again, the definitions you have made (functions and variables) are lost. Therefore, if you want to write a somewhat longer program, you are bett...

docs.python.org

 

 

Django settings | Django 문서

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

 

URL dispatcher | Django 문서

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

 

ASGI를 사용하여 배포하는 방법 | Django 문서

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

 

WSGI를 사용하여 배포하는 방법 | Django 문서

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

 

개발 서버

장고 프로젝트가 제대로 작동하는지 확인해 보겠습니다. 아직 장고 튜토리얼 디렉토리로 변경하지 않았다면아래 명령어를 사용하면 된다.

 

 py manage.py runserver

 

 

아래는 커멘드라인에서 나오는 메시지 이다.

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

1월 15, 2025 - 15:50:53
Django version 5.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

 

이제 서버가 실행 중이니 웹 브라우저의  http://127.0.0.1:8000/ 를 통해 접속할 수 있다. 이 주소로 들어가보면 이륙하는 Congratulationsl 페이지가 보일 것입니다.

 

Django 개발 서버를 시작했습니다. 개발 서버는 순수 Python으로 작성된 경량 웹 서버입니다. 운영 준비가 될 때까지 Apache와 같은 운영 서버를 구성할 필요 없이 신속하게 개발할 수 있도록 Django에 포함했습니다.

 

이 서버를 운영 환경과 유사한 환경에서 사용해서는 안되며. 개발 중에만 사용할 수 있도록 되어 있습니다. (우리는 웹 서버가 아닌 웹 프레임워크를 만드는 것이다..)

 

프로젝트 vs 앱

프로젝트와 앱은 무엇이 다를까요? 앱은 블로그 시스템, 공개 기록 데이터베이스 또는 소규모 의견조사 앱과 같은 작업을 수행하는 웹 애플리케이션이다. 프로젝트는 특정 웹 사이트에 대한 구성 및 앱의 모음입니다. 한 프로젝트에 여러 개의 앱이 포함될 수 있습니다. 앱은 여러 프로젝트에 있을 수 있다.

 

이제 앱 생성하기 위해 manage.py 가 존재하는 디렉토리에서 아래 명령어를 입력하면 됩니다.

 

py manage.py startapp polls

 

명령어 실행시 디렉토리  :file:`polls`가 생성되며, 이 디렉토리는 다음과 같이 배치된다.

 

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

 

위와 같은 디렉토리 구조는 투표 어플리케이션의 집이 되는 것이죠.

 

첫 번째 뷰 작성하기

“polls/view.py”를 열어 다음과 같은 파이썬 코드를 입력

 

polls/views.py
from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

 

Django에서 가장 기본적인 보기로, 브라우저에서 액세스하려면 URL에 매핑해야 하며, 이를 위해 URL 구성 URLconf를 정의해 주어야함. 이러한 URL 구성은 각 Django 앱 내에서 정의되며, urls.py 라는 파이썬 파일이 필요함

 

폴링(설문조사) 앱의 URLconf를 정의하려면 다음 내용을 포함하는 파일 폴링/urls.py 을 만들어야 한다.

 

polls/urls.py
from django.urls import path

from . import views

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

 

앱 디랙토리는 아래와 같이 표현된다.

 

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

 

다음 단계는 mysite 프로젝트에서 글로벌 URLconf를 구성하여 polors.urls에 정의된 URLconf를 포함하도록 하는 것으로, 이를 수행하려면 mysite/urls.py 에 django.urls.include의 가져오기를 추가하고 urlpatterns 목록에 포함 ()를 삽입하면 된다.

 

mysite/urls.py
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path("polls/", include("polls.urls")),
    path("admin/", admin.site.urls),
]

 

path() 함수는 경로와 보기라는 두 가지 이상의 인수를 예상하며.

include() 함수는 다른 URLconf를 참조할 수 있게 해줍니다.

장고가 include()를 만날 때마다 해당 지점까지 일치하는 URL의 모든 부분을 잘라내고 나머지 문자열을 포함된 URLconf로 보내 추가 처리를 진행해준다.

 

include()에 숨은 아이디어 덕분에 URL을 쉽게 연결할 수 있으며. polls(설문조사) 앱에 그 자체의 URLconf(polls/urls.py)가 존재하는 한, “/polls/”, 또는 “/fun_polls/”, “/content/polls/”와 같은 경로, 또는 그 어떤 다른 root 경로에 연결하더라도, 앱은 여전히 잘 동작할 것이다.

 

'''

언제 include()를 사용해야 하나요?

다른 URL 패턴을 포함할 때는 항상 include()를 사용해야 하며, 유일한 예외는 admin.site.urls이다. admin.urls는 기본 관리 사이트를 위해 Django에서 제공하는 사전 빌드 URLconf 인 것이다.

'''

 

이제 index 뷰가 URLconf에 연결되었습니다. 잘 작동하는지 확인하기 위해 다음 명령을 입력하면 되며

 

py manage.py runserver

 

브라우저에서 http://localhost:8000/polls/를 입력하면 index 뷰에 정의한 “Hello, world. You’re at the polls index.” 가 보이게 되는 것이다.

 

'''

페이지가 보이지 않을 경우

에러 페이지가 표시된다면, http://localhost:8000/ 이 아니라 http://localhost:8000/polls/가 정확히 주소 창에 입력되었는지 확인하세요.

'''

튜토리얼  에서는 request 와 response 의 기본 흐름을 공부한 것입니다.

다음 장에서는 데이터 베이스 작업을 진행합니다.

728x90