python manage.py runserver #서버 실행
django-admin startapp pybo #앱 생성
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에 오신 것을 환영합니다.")
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/' |