어떤 웹 프레임워크를 사용하던 간에 제일먼저 하게 되는 것은 라우팅이다.
URLconf : 장고에서 URL과 일치하는 뷰를 찾기 위한 패턴들의 집합
project의 urls.py을 거쳐서 특정 app로 라우팅을 하게 되면 그 app의 urls.py에서 view안에 있는 특정 함수와 매칭을 시켜서 작업을 수행하게 된다.
django-admin startapp myapp
app을 만드는 명령어는 위와 같으며 myapp이라는 app을 생성한다.
myapp
- __init__.py
- admin.py
- apps.py
- models.py
- tests.py
- views.py
#myproject - urls.py
from django.contrib import admin
from django.urls import path, include #include 추가
#라우팅 설정
urlpatterns = [
path('admin/', admin.site.urls), #django가 기본적으로 가지고있는 관리자 화면
#include안에는 위임하려고 하는 app의 이름을 적어준다.
#사용자가 http://127.0.0.1/ 으로 접속하면 myapp의 urls로 위임
path('',include('myapp.urls'))
#사용자가 http://127.0.0.1/app/으로 접속하면 myapp2의 urls로 위임
path('app/',include('myapp2.urls'))
]
startapp을 하면 그안에 urls.py는 만들어지지 않기 때문에 따로 만들어줘야한다.
#myapp - urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('',views.index), #사용자가 http://127.0.0.1로 들어왔다.
path('create/',views.create), #http://127.0.0.1/create/
#path('read/1/',views.read) #http://127.0.0.1/read/1
path('read/<id>/',views.read) #가변적으로 처리하기위해 <>이용
]
각각의 경로로 접속을 했을때 그것을 views로 전달하려면 어떻게 해야할까?
#myapp - views.py
from django.shortcuts import render,HttpResponse #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)
views.py안에 클라이언트로 정보를 전송하는 역할을 하는 함수를 생성해준다.
기본적으로 파라미터의 첫번째 인자로 요청과 관련된 여러가지 정보가 들어오도록 약속되어있기 때문에 request라는 변수를 하나 둔다.
우리가 처리한결과를 클라이언트로 보내줄때 return값으로 보내주는데 http를 이용해서 응답을 하겠다는 의미에서 HttpRespone객체를 이용한다.
#myapp - urls.py
from myapp import views
path('create/',views.create)
위와같이 함수를 만들고 views에 있는 함수를 끌어오기위해 import를 해준다음 path에 함수를 지정해준다.
'http://127.0.0.1/read/1' 와 같이 read 뒤에 가변적인 값이 들어오는건 어떻게 처리를 해줄 수 있을까?
#myapp - views.py
def read(request, id):
return HttpResponse('read!' + id)
#myapp - urls.py
path('read/<id>/,views.read)
위와 같이 <>를 이용하여 가변적인 값에 대한 처리를 해줄 수 있다.
'http://127.0.0.1/read/123' 으로 들어가면 read!123을 return 해주게 되는 것이다.
출처 : https://www.youtube.com/watch?v=QX8CQMycDa0&list=PLuHgQVnccGMDLp4GH-rgQhVKqqZawlNwG&index=4
https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Introduction
'Backend > Python' 카테고리의 다른 글
Web Framework Django 시작하기(4) - CRUD의 Read (0) | 2022.01.11 |
---|---|
Web Framework Django 시작하기(3) - Django에 대해 (0) | 2022.01.10 |
Web Framework Django 시작하기(1) - 프로젝트 생성 (0) | 2022.01.08 |
Python Multithread vs Multiprocessing (0) | 2021.12.29 |
Python Thread (0) | 2021.12.28 |