내가 어떤 웹프레임워크를 사용하건간에 제일 먼저 하는 작업이 라우팅이다. 라우트는 경로를 말한다.
웹 애플리케이션에서 경로라는 것은 사용자가 접속한 각각의 경로를 누가 처리할것인가를 지정하는 것이고 이게 바로 라우팅이다. 어떤 프레임워크를 사용하건간에 제일 먼저 따질것이 라우팅이다. 장고에서는 프로젝트 폴더안에 있는 urls.py가 가장 큰 틀의 라우팅을 하고, 그것을 적당한 앱으로 위임을 해주면 앱이 뷰 안에 있는 특정 함수로 위임을 해주고 그 함수가 작업을 처리하게된다.
app 설치
django-admin startapp myapp
프로젝트 안의 urls.py
제일먼저 따져봐야할것은 여러 약속을 지키는것이다.
먼저 urlpatterns라는 이름의 리스트를 반드시 정의해야하고, 그 리스트 안에는 라우팅과 관련된 정보가 적혀있어야한다.
기본적으로 admin/가 적혀있는데, 이건 장고가 기본적으로 가지고 있는 관리자 화면으로 이동하기위한 라우팅 설정이다.
다른 URLconf 포함
1. include() 함수를 가져옵니다. django.urls에서 include, path를 가져옵니다.
2. urlpatterns에 URL을 추가합니다: path('blog/', include('blog.urls'))
사용자가 접속했을때 admin/이 아닌 다른 경로로 접속하면 그 접속을 myapp의 urls로 위임한다.
from django.contrib import admin
from django.urls import path, include #include 함수를 사용하기위해 import
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapp.urls'))
]
생성한 app의 urls.py
사용자가 경로를 지정하지 않고 접속했을때 views.py의 index 함수로 위임하기 위해서 path()에 두번째 파라미터값을 줘야한다. views 모듈을 사용하기위해 import 를 먼저하고 파라미터 값에 views.index를 지정한다.
나머지도 마찬가지.
read의 경우 뒤에 가변값이 오게 하기 위해서 <>를 이용해서 그 값의 이름을 적어준다.
그리고 views.py에서 read 함수의 두번째 인자로 id를 주면 주소창에 경로값을 읽어 동적으로 변한다.
from django.urls import path
from myapp import views
urlpatterns = [
path('', views.index),
path('create/', views.create),
path('read/<id>/', views.read)
]
생성한 app의 views.py
HttopResponse를 사용하기위해 import
클라이언트로 정보를 전달할 역할을 할 함수를 지정하고 이 함수에는 약속이 있다.
첫번째 파라미터 인자로 요청과 관련된 여러가지 정보가 들어오도록 약속된 객체를 전달해줘야한다. -- request
이 이름은 아무거나 해줘도 상관없지만 관습적으로 request를 사용한다.
그리고 우리가 처리한 결과를 클라이언트로 보내줄때 리턴값으로 보내주는데 http를 이용해서 응답을 하겠다는 의미에서
HttpResponse라는 객체를 이용한다. 이 객체를 이용하기위해서는 import 해줘야한다.
그리고 그 인자로 전송하고 싶은 값을 적어주면된다.
from django.shortcuts import render, HttpResponse
# Create your views here.
def index(request):
return HttpResponse('Welcome!')
def create(request):
return HttpResponse('Create')
def read(request, id):
return HttpResponse('Read'+id)
'FRAME WORK > Django' 카테고리의 다른 글
Django ) Django를 쓰는 이유 (0) | 2024.10.14 |
---|---|
Django ) app 생성 (0) | 2024.10.14 |
Django ) 포트의 개념 (0) | 2024.10.14 |
Django ) 설치 (0) | 2024.09.30 |