python manage.py runserver #서버 실행
django-admin startapp pybo #앱 생성

url 매핑

urls.py 수정

from django.contrib import admin
from django.urls import path

from pybo import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('pybo/', views.index), #추가
]

pybo/ 로 들어가면 views.py의 index 함수를 호출하라는 뜻

urlpatterns에서 실제 URL은 http://localhost:8000/pybo 이지만 호스트명과 포트가 생략된 pybo/로 매핑해야 한다. 왜냐하면 호스트(예:localhost)와 포트(예:8000)는 서버가 어떤 환경에서 실행되는지에 따라 변하기 때문이다.

# Create your views here.
from django.http import HttpResponse

def index(request):
    return HttpResponse("안녕하세요 pybo에 오신 것을 환영합니다.")

스크린샷 2024-07-10 오전 12.22.56.png

django의 기본적인 흐름

Untitled

url 분리

pybo 앱에 관련한 것들은 pybo 앱 디렉터리 하위에 위치

config의 urls.py 파일은 앱이 아닌 프로젝트 성격의 파일이므로 이곳에는 프로젝트 성격의 URL 매핑만 추가

from django.contrib import admin
from django.urls import path, include
~~from pybo import views~~  # 더 이상 필요하지 않으므로 삭제

urlpatterns = [
    path('admin/', admin.site.urls),
    path('pybo/', include('pybo.urls')), 
]

path('pybo/', include('pybo.urls'))의 의미는 pybo/로 시작하는 페이지를 요청하면 이제 pybo/urls.py 파일의 매핑 정보를 읽어서 처리하라는 의미

from django.urls import path

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

즉, pybo/ URL은 다음처럼 config/urls.py 파일에 매핑된 pybo/ 와 pybo/urls.py 파일에 매핑된 '' 이 더해져 pybo/가 된다.

config/urls.py pybo/urls.py 최종 URL
'pybo/' + '' = 'pybo/'
'pybo/' + 'question/create/' = 'pybo/question/create/'

모델

django 앱 migrate