본문 바로가기
FrameWork/Django

URL & views

by mansoorrr 2024. 7. 17.

views.py파일은 라우팅이 들어왔을때 실행되는 함수를 의미한다.

 

[** urls.py **]

  • 프로젝트 처음 시작할때 만든 config폴더에는 urls.py가 있다.
  • urlpatters라는 변수로 라우팅 경로를 관리한다.
  • 경로와 실행될 함수는 path함수로 관리하며 (<url경로>, <실행함수>) 로 입력한다.
#-------------------- rooms/views.py
#함수 입력
def say_hello(request):
	return HttpResponse('hello')

#-------------------- config/urls.py
urlpatterns = [
	path('admin/', admin.site.urls),
    path('room/, say_hello), #내용 추가
]

 

 

[** views.py **]

  • 라우팅을 통해 어떤 경로가 요청되면 경로에 들어왔을때 함수를 실행한 후 화면에 뿌린다
  • 함수는 인자로 request를 꼭 받아야 하며 문자열 응답시에는 HttpResponse()로 return 해야 한다

 

[** urls 분리하여 관리 **]

  • api가 많아지게 되면 config/urls.py에 모든 url을 넣는것은 비효율적이다.
  • 따라서, app별로 api를 관리하도록 하고
  • config/urls.py에는 이들을 모으는 가장 큰 개념의 url만 관리한다.
  • 이를 위해 app에 urls.py파일을 만들어 주고 config/urls.py를 수정한다.
#-------------------- rooms/urls.py(파일생성)
from django.urls import path
from rooms.views import say_hello

urlpatterns = [
	path('', say_hello), #127.0.0.1:8000/rooms/로 들어가면 say_hello()가 실행된다는 뜻
    path('test/', say_hello), #127.0.0.1:8000/rooms/test/로 들어가면 say_hello()가 실행된다는 뜻
]


#-------------------- config/urls.py
from django.urls import include, path

urlpatterns = [
	path('admin/', admin.site.urls),
    path('rooms/', include('rooms.urls'), #include를 통해 라우팅을 분기처리
]

 

 

[** url에 argument 적용**]

  • url에 arguments를 붙여 함수를 실행하는방법
  • app/urls.py에서 path('<<데이터타입>: argument_name>', <실행할 함수>) 형식으로 입력한다.
  • app/views.py에서 실행할 함수의 인자로 argument_name을 넣어준다.
#---------- room/views.py
def see_one_room(request, room_id):
	return HttpResponse(f"see {room_id}")

#---------- room/urls.py
urlpatterns = [
	path('', say_hello), # 127.0.0.1:8000/rooms/ > say_hello()실행
    path('<int:room_id>', see_one_room), #127.0.0.1:8000/rooms/<room_id>/ > see_one_room
]

 

'FrameWork > Django' 카테고리의 다른 글

DRF(Django Rest Framework)  (0) 2024.07.17
Templates Rendering  (0) 2024.07.17
ORM  (0) 2024.07.15
App Apps  (0) 2024.07.15
App User  (0) 2024.07.13