board application의 url을 먼저 셋팅해본다.
설명을 위해 ### 으로 표시된 코드만 본다.
*urls.py (practice_url>board>urls.py)
from django.urls import path
from board import views
urlpatterns = [
path('', views.board), ###
]
* practice_url > practice_url > urls.py
from django.contrib import admin
from django.urls import path, include
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.first),
path('second/', views.second),
path('products/', include('product.urls')),
path('boards/', include('board.urls')), ###
]
* practice_url > practice_url > urls.py
path('boards/', include('board.urls')),
path('boards/', include('board.urls')),
boards라고 하는 이름을 갖고 있는 url들은
path('boards/', include('board.urls')),
모두 board.urls에서 관리한다고 적어뒀다.
* practice_url>board>urls.py
path('', views.board),
path(' ', views.board),
그렇기 때문에 아무것도 입력하지 않았을 때는
url의 boards를 입력했을 때 실행되는 함수라고 보면 된다.
(127.0.0.1:8000/boards/)
이게 무슨 말이냐면
웹서비스 주소는 127.0.0.1:8000/이다.
그런데 127.0.0.1:8000/boards/
이렇게 생긴 url들을 board.urls에서 관리해준다.
그런데 이 urls.py
즉, practice_url>board>urls.py
path('', views.board),
여기 안에서 아무것도 입력하지 않았을 때 실행되는 함수는
127.0.0.1:8000/boards/
곧 boards를 입력했을 때 실행되는 함수이다.
Q&A
path('', views.board),
Q1) 아래 1번과 2번으로 적어둔 위 코드에 대한 해석을 맞게 작성한건가요?
1. views 안에 있는 board 라고 하는 함수를 실행한다.
맞습니다. views.py 내부에 작성한 board 함수를 호출하는 것입니다.
2. "아무것도 입력하지 않았을 때는 url의 boards를 입력했을 때 실행되는 함수라고 보면 된다. "
에서 boards는 함수가 아니라 127.0.0.1:8000/boards/의 boards를 의미하는 것이 맞나요?
맞습니다.
boards는 함수가 아니라 url 경로상에 수강생님이 생성한
path('boards/', views.board) 형태로 찾아가는 것을 의미합니다.
(다만, views에 연결한 함수는
수강생님의 의도에 따라 board가 아닌 다른 값이 들어올 수 있습니다.)
Q2)
아무것도 입력하지 않았을 때 = 127.0.0.1:8000/boards/를 입력했을 때
(url에서 boards 뒤에 다른 것을 입력하지 않았으므로)
위와 같은 결론이 나오는게 맞게 해석한건가요? (두개가 서로 같은 말인가요??)
제가 정확하게 이해한 것인지 모르겠으나
path('boards/', views.board) / path('', views.board),가
같은 페이지가 나오는 것인지 문의주신 것일까요?
두 함수가 경로만 다를 뿐, 같은 board라는 함수를 참고하고 있다면,
결과적으로 같은 화면이 보이게 될 것입니다.
다만, 이렇게 되면 개발하는 과정에 혼동이 있을 수 있으니
좋은 코드로 보기는 어려울 것 같습니다.
Q3)
또 위 1번과 2번은 같은 의미로써 두 개의 의미 모두 결론은 하나로써
views 안에 있는 board 라고 하는 함수를 실행한다 라는 말이 되는 건가요??
1번 문항에서 답변은 이미 드린 것 같지만
경로만 다르게 해서 동일한 html 페이지를 동일한 board라는 함수를 이용해
보여주고 있다고 이해하면 되겠습니다.
마찬가지로
* practice_url > product >urls.py
from django.urls import path
from product import views
urlpatterns = [
path('', views.productlist),
]
productlist라고 하는 함수는 어떤 url에서 실행될 것인가
*practice_url > practice_url > urls.py
우리들의 웹사이트 주소는 127.0.0.1:8000/이다.
근데 products라고 하는 url에 대해서는
product라고 하는 application 안에 있는 urls.py에서 관리를 해준다.
*practice_url > product >urls.py
path('', views.productlist),
근데 여기서 아무것도 입력하지 않았을 때
from django.urls import path
from product import views
urlpatterns = [
path('', views.productlist), # << 여기
]
실행되는 함수가 productlist니깐
( *practice_url > practice_url > urls.py )
곧 127.0.0.1:8000/products
라고 입력했을 때
(* practice_url > product >urls.py )
실행되는 함수가 productlist이다.
path('', views.productlist),
예를 들어서
*practice_url > board >urls.py
from django.urls import path
from board import views
urlpatterns = [
path('', views.board),
path('first/', views.boardfirst),
]
boardfirst라고 하는 함수는 어떤 url에서 실행이 될 것인가?
*practice_url > practice_url > urls.py
path('boards/', include('board.urls')),
우리들의 웹 서비스 주소는 127.0.0.1:8000/ 이 것인데
boards로 시작되는 모든 url들은 board.urls에서 관리를 한다.
path('first/', views.boardfirst),
여기 url 중에서 boards/first에 실행 되는 함수가 boardfirst가 된다.
즉, 127.0.0.1:8000/boards/first 이 url에 대해서 실행되는 함수가
boardfirst 함수가 되는 것이다.
*practice_url > product > urls.py
여기도 마찬가지다.
from django.urls import path
from product import views
urlpatterns = [
path('', views.productlist),
path('first', views.productlist),
]
'Django > 회사 소개 사이트' 카테고리의 다른 글
URL Mapping 2 (0) | 2021.07.30 |
---|---|
URL Mapping ( 결과 값 캡쳐해서 수정 필요) (0) | 2021.07.29 |
웹사이트 만들기 (0) | 2021.07.28 |