ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • django 입문(3) Routing
    Backend/Django 2023. 7. 3. 22:40

    urls.py

    project(보통 config) - urls.py: 가장 큰 틀의 Routing 작업 수행. 들어온 요청을 적당한 App으로 위임. 프로젝트 성격의 URL 매핑만 추가되는 것이 좋다.

    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/' URL이 요청되면 views.index 를 호출하라는 매핑을 추가
    ]
    

    URL 뒤에 ‘/’ 를 붙이는 이유는 URL을 정규화하는 장고의 기능 때문. 따라서 웬만하면 URL 매핑 시 항상 끝에 슬래시(’/’) 를 붙이자.

    app - urls.py: 앱 내 적당한 함수로 위임하는 역할

    특정 앱에 관련된 것(ex.요청)들은 해당 앱 디렉터리 하위 경로에서 관리하는 것이 좋다.

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

    path(‘URL’, include(’app.urls’)): 특정 URL로 시작되는 페이지 요청은 app/urls.py 파일의 매핑 정보를 읽어서 처리하라는 의미.

    from django.urls import path
    from . import views
    
    urlpatterns = [
    	path('', views.index),
    	path('create/', views.create),
      ...
    ] 
    

    path(’’. views.index): 요청받은 앱 URL의 공통 부분은 이미 config/urls.py에서 먼저 매핑되었으므로 앱 내부의 urls.py에서는 해당 URL을 ‘’← 처럼 생략함.

    config/usrls.py에서 처리된 URL 공통 부분 이후에 나오는 URL에 대해서는 [app]/urls.py 에서 새로 선언 및 정의하면 됨. 이 경우 최종 URL은 http://[IP]:[Port]/[App의 공통URL]/[나머지URL] 형식이 된다.

    URL에서 특정 데이터를 뽑아 페이지에 전달할 때

    (생략)
    urlpatterns = [
    	path('', views.func1),
    	path("<int:var>/", views.func2),
    ]
    

    url이 “http://{app_base_url}/1” 인 페이지가 요청되면 기본 url 다음에 오는 정수 데이터 1이 var에 int 형으로 저장되고 views.func2 함수에 전달된다.

     

    views.py

    화면에 출력될 내용을 정의

    from django.http import HttpResponse
    
    def index(request):
    	return HttrResponse("안녕하세요 pybodp에 오신 것을 환영합니다.")
    

    HttpResponse: 요청에 대한 응답에 사용.

    request: HTTP 요청 객체

    댓글

Designed by Tistory.