[Django] 앱 생성하기, View 작성하기

hwwwa·2023년 2월 16일
0

🚀 Django Tutorial

목록 보기
2/5

https://velog.io/@inhwa1025/MAC에서-Django-설치하기 에서 이어지는 내용입니다.

Django 프로젝트 생성 후 파일 목록

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
  • file:mysite/ : 현재 프로젝트를 담는 공간. 이름 변경 가능
  • manage.py : 장고 프로젝트와 상호작용하는 커맨드라인 유틸리티
  • mysite/ : 현재 프로젝트를 위한 실제 python 패키지들이 저장됨. 해당 디렉토리 내의 이름을 이용(mysite.urls)하여 프로젝트 내에서 python 패키지 import 가능
  • mysite/__init__.py: Python이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일
  • mysite/settings.py: 현재 프로젝트의 환경 및 구성을 저장
  • mysite/urls.py: 현재 프로젝트의 URL 선언을 저장합니다. Django 로 작성된 사이트의 목차
  • mysite/asgi.py: 현재 프로젝트를 서비스하기 위한 ASGI-호환 웹 서버의 진입점
  • mysite/wsgi.py: 현재 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점

앱 생성하기

$ python3 manage.py startapp polls
  • 프로젝트와 앱의 차이
    • 앱은 블로그 시스템, 소규모 설문조사 앱 등의 웹 애플리케이션
    • 프로젝트는 특정 웹 사이트에 대한 구성 및 앱의 모음
    • 한 프로젝트 내에 여러 앱 포함 가능
    • 앱은 여러 프로젝트에 존재할 수 있음

앱 생성 후 파일 목록

  • 앱을 생성하면 지정한 이름으로 디렉토리가 생성된 것을 확인할 수 있음
polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

View 작성

  • polls/views.py
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")
  • view 호출을 위해 연결된 URL이 필요하므로 URLconf 사용
  • polls 디렉토리 안에 urls.py 파일 생성하여 아래 내용 추가
from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]
  • 최상위 URLconf인 mysite/urls.pydjango.urls.include를 import하고 urlpatternsinclude() 함수 추가
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]
  • include()
    • include() 함수는 다른 URLconf를 참조할 수 있도록 해줌
    • Django가 include() 함수를 만나면 URL의 그 시점까지 일치하는 부분 외에 남은 문자열 부분을 처리하기 위해 include된 URLconf로 전달
    • admin.site.urls를 제외하고 URL 패턴을 포함할 때마다 include() 함수 사용 필요
  • 서버를 구동하고 잘 적용되었는지 확인
$ python manage.py runserver

http://127.0.0.1:8000/polls/ 접속하면 view에 정의한대로 아래와 같은 화면을 볼 수 있음

0개의 댓글