URL 패턴 정의
Django에서 URL 패턴은 urls.py에서 정의되며, 일반적으로 path() 함수를 사용
URL Dispatcher
들어온 요청(URL)이 어느 view 함수로 처리되어야 할지를 결정하는 Django의 시스템
Django는 URL을 구조적으로 매핑하여 가독성과 유지보수성을 높임
URL 분리와 다중 앱 구성
Multiple Apps 구성
• 프로젝트가 복잡해지면 앱 별로 URL과 view를 관리하는 것이 효과적
• 각 앱 내부에 urls.py를 추가하여 정리 가능
users 앱 생성
python manage.py startapp users
users앱 등록
users 앱 내 urls.py, views.py, templates/profile.html, templates/users.html 생성
App(articles, users) 내 urls.py
Naming URL Patterns
URL을 이름으로 참조하여 유지보수성 향상
name 속성을 사용
템플릿에서 사용시
예시 : <a href="{% url 'users' username='subin' %> Subin's Profile</p>
→ URL 변경 시, name 기반 참조는 템플릿 수정을 최소화
Variable Routing
URL 일부를 변수로 처리하여 다양한 데이터에 대응 가능(변수로 정의한 해당 값을 view 함수에 전달)
- <str:username>
str : 문자열 데이터 타입
username : 변수 이름
<str>: 문자열
<int>: 정수
<slug>: 영문자, 숫자, 밑줄, 하이픈
<uuid>: UUID 형식
프로젝트의 urls.py
다른 URLconf 모듈 포함(include)
프로젝트의 urls에 Include를 통해 분리한 app의 경로 포함
include되는 urls에는 반드시 urlpatterns가 필요함(빈 리스트 가능)
- 프로젝트의 urls.py에서 앱의 디렉토리 패턴과 일치함을 발견
- 앱의 urls.py로 다음 처리를 이관
- 앱의 urls.py에서 이후 디렉토리 패턴과 일치하는 url 패턴을 탐색
- 일치한다면 해당 views로 가서 처리
View 함수와 템플릿 연결
- View 함수는 URL에서 받은 username을 템플릿에 전달
- context 딕셔너리를 사용해 데이터 템플릿에 전달
템플릿
앱 간 템플릿 정리
• 앱 별로 템플릿 폴더를 나눔
• 앱 폴더 내에 templates 디렉토리를 생성
• TEMPLATES 설정에서 APP_DIRS가 True여야 Django가 앱 템플릿을 자동 탐색
*Trailing Slash (슬래시 구분)
- /
디렉토리로 인식
- //
파일로 인식
Django는 기본적으로 URL 끝에 /를 붙이는 방식을 채택
→ APPEND_SLASH=True (기본값)
/ 없는 URL 요청을 /로 자동 리다이렉션
→ 변경이 필요 없다면 기본 설정 유지 추천
VSCode 코드 이동 단축키(MacOS)
Option + 위/아래 방향키
'∟Framework > ∟Django' 카테고리의 다른 글
Django - ORM(Object-Relational Mapping) (0) | 2025.01.14 |
---|---|
Django - Model (1) | 2025.01.14 |
Django - HTTP Form (0) | 2025.01.12 |
Django - Template System/ Django Template Language(DTL) (2) | 2025.01.10 |
Django - Template (0) | 2025.01.09 |