* 참고 자료 : 코드잇 Django 강의
1. 우아한 URL
장고에서 URL을 처리하는 방식을 우아한 URL(Elegant URL)이라고 한다.
URL을 우리가 원하는 형태로 구성할 수 있고 직관적이고 알아보기 쉬운 구조로 만들 수 있다는 장점이 있다.
2. 모든 메뉴에 대해 상세 페이지 만들기
만약 한 메뉴에 대해 한 가지의 url을 만들어준다면 100개의 메뉴가 있다면 100개의 url을 추가해주는 것과 같다.
이것은 너무 비효율적이다.
이럴 때 이용하는 게 경로 변수를 이용한 동적 URL (Dynamic URL) 이것이 곧 우아한 URL이다.
(1) foods앱의 url파일
* 주의 : 아래 사진에서 첫 번째 path다음에 콤마 추가해주세요!!!!!!!
여기서 <str:food> 부분을 동적 URL이라고 한다.
이 부분을 설명해보자면
URL: ~menu/(문자열) -> menu 다음에 경로 구분 기호( / )를 제외한 그 뒷부분을 문자열로 보고
<str:food>의 food에 담아서 food.detail함수를 호출할 때 인수로 전달한다.
이 <str:food> 부분을 문자열 말고 다른 타입으로도 변경할 수 있다.
* <int : variable>
0 또는 양의 정수와 일치하는지 확인
* <slug : variable>
문자, 숫자, 언더바, 하이픈으로 구성된 문자열인지 확인
이제 함수 food_detail을 만들어보자.
(2) foods앱 안의 views파일
원래는 함수의 파라미터를 request로 받았지만 이번에는 문자열을 인수로 전달한다고 했으므로
이 문자열을 받아줄 파라미터를 넣어주어야 한다.
그리고 detail.html을 render 해주면 된다.
그러기 위해서는 views에서 templates로 데이터를 넘겨주어야 하는데 저번에도 공부했듯이
사전형에 담아서 render함수의 세 번째 인수로 넘겨주면 된다.
이제 detail 템플릿을 만들면 된다.
(3) detail.html
간단히 문자열을 전달받으면 그 문자열을 출력하는 페이지를 만들어 보겠다.
먼저 아까 사전형으로 전달받았으니 detail.html의 코드는 다음과 같다.
내가 만약에 URL을 ~/menu/chicken이라고 받으면 이 chicken이라는 문자열이 사전형(food변수)으로 전달되어 detail.html에 name으로 출력된다.
chicken 대신 pasta라고 써도
잘 나오는 것을 확인할 수 있다.
'웹 > Django' 카테고리의 다른 글
[Django] 모델 이해하기 , 데이터베이스/ 2021.09.17 (0) | 2021.09.17 |
---|---|
[Django] 동적 웹페이지 만들기 / 2021.08.30 (1) | 2021.08.30 |
[Django] 중복되는 템플릿 코드 없애기, 템플릿 상속 / 2021.08.29 (2) | 2021.08.29 |
[Django] 템플릿 언어 (Template Language) / 2021.08.27 (0) | 2021.08.27 |
[Django] 정적(static)파일 관리하기 / 2021.08.27 (0) | 2021.08.27 |