1. Django URLs
웹 어플리케이션은 URL을 통한 클라이언트의 요청에서부터 시작함
Variable routing
- URL 주소를 변수로 사용하는 것을 의미
- URL의 일부를 변수로 지정하여 View 함수의 인자로 넘길 수 있음
- 즉, 변수 값에 하나의 path()에 여러 페이지를 연결 시킬 수 있음
Variable routing 작성
변수는 "< >"에 정의하며 view 함수의 인자로 할당됨
기본 타입은 string이며 5가지 타입으로 명시할 수 있음
1 | 2 | 3 | 4 | 5 |
str | int | slug | uuid | path |
`/ `를 제외하고 비어 있지 않은 모든 문자열 작성하지 않을 경우 기본 값 |
0 또는 양의 정수와 매치 | - | - | - |
App URL mapping
- 하나의 프로젝트에 여러 앱이 존재한다면, 각각의 앱 안에 urls.py를 만들고 프로젝트 urls.py에서 각 앱의 urls.py 파일로 URL 매핑을 위탁할 수 있음
| Including other URLconfs
urlpattern은 언제든지 다른 URLconf 모듈을 포함(include)할 수 있음
◈ include되는 앱의 url.py에 urlpatterns가 작성되어 있지 않다면 에러가 발생
ex) pages 앱의 urlpatterns가 빈 리스트라도 작성되어 있어야 함
| include()
- 다른 URLconf(app/urls.py)들을 참조할 수 있도록 돕는 함수
- 함수 include()를 만나게 되면 URL의 그 시점까지 일치하는 부분을 잘라내고, 남은 문자열 부분을 후속 처리를 위한 include된 URLconf로 전달
| URL 구조의 변화
앱의 URL을 project의 urls.py에서 관리 → 복수 개의 앱의 URL을 project의 urls.py에서 관리
→ 각각의 앱에서 URL을 관리
Naming URL patterns
만약 "index/" 의 문자열 주소를 "new-index/"로 바꿔야 한다
> 그럼 "index/" 주소를 사용했던 모든 곳을 찾아서 변경해야하나??
- 링크에 URL을 직접 작성한는 것이 아니라 "path()" 함수의 name 인자를 정의해서 사용
- DTL의 Tag 중 하나인 URL 태그를 사용해서 "path()" 함수에 작성한 name을 사용할 수 있음
- 이를 통해 URL 설정에 정의된 특정한 경로들의 의존성을 제거할 수 있음
- Django는 URL에 이름을 지정하는 방법을 제공 → view 함수와 템플릿에서 특정 주소를 쉽게 참조할 수 있도록 도움
| Built - in tag - "url"
템플릿에서 사용 : 주어진 URL 패턴 이름 및 선택적 매개 변수와 일치하는 절대 경로 주소를 반환
템플릿에 URL을 하드 코딩하지 않고도 DRY 원칙을 위반하지 않으면서 링크를 출력하는 방법
| url 태그 출력 확인하기
url 태그가 URL 패턴 이름과 일치하는 절대 경로 주소를 반환하는 것을 확인하기
URL namespace
URL namespace를 사용하면 서로 다른 앱에서 동일한 URL 이름을 사용하는 경우에도 이름이 지정된 URL을 고유하게 사용할 수 있음
app_name attribute를 작성해 URL namespace를 설정
| URL 참조
" : " 연산자를 사용하여 지정
app_name 이 articles이고 URL name이 index인 주소 참조는 articles : index 가 됨
'FrontEnd > Django' 카테고리의 다른 글
01. MTV 구조 (0) | 2023.03.22 |
---|---|
00. Django 개요 (1) | 2023.03.21 |