[Django] Variable routing

한결·2023년 3월 28일
0

WEB

목록 보기
14/63

Variable routing

  • URL 주소를 변수로 사용하는 것을 의미
  • URL의 일부를 변수로 지정하여 view함수의 인자로 넘길 수 있음
  • 즉, 변수 값에 따라 하나의 path()에 여러 페이지를 연결 시킬 수 있다

프로필 페이지를 생각해보자 지금 까지는 hello/, hi/ 등으로 들어오면 각각의 url을 하나하나 다 처리 해줬다
근데 만약 User가 10000명이라면 url을 10000개 만들어야 하나??
-> 이럴때 쓰는 것이 Variable routing

예를 들어, profile/{변수}/ profile 다음으로 들어오는 url을 변수처럼 처리해 줄 수 있다

Variable routing 작성

  • 변수는 "<>"에 정의하며 view함수의 인자로 할당됨
  • 기본 타입은 string이며 5가지 타입으로 명시할 수 있음
  1. str
  • '/'를 제외하고 비어 있지 않은 모든 문자열
  • 작성하지 않을 경우 기본값
  1. int
  • 0또는 양의 정수와 매치
  1. slug
  2. uuid
  3. path

Variable routing 예시

hello/coco/로 들어가면 hello coco가 보이고
hello/james/로 들어가면 hello james가 보이도록 해보자

  1. urls.py에 경로를 만들자
urlpatterns = [
    # 생략
    path('hello/<str:name>/', views.hello),
]
  • <str:name>의 의미
    • /문자열/ 처럼 문자열로 들어와서 매칭이 되면 views.hello로 보내서 처리해 라는 뜻
  1. views.py 에 함수를 추가하는데 /<str:name>/ 의 변수 name을 받고 template로 보내주자
def hello(request,name):
    context = {
        'name' : name
    }
    return render(request, 'myapp/hello.html', context)
  1. context로 감싼 name을 hello.html에서 사용하자
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Hello! {{name}} </h1>
    
</body>
</html>
  • 결과

0개의 댓글