∟Framework/∟Django

Django - URLs

최 수빈 2025. 1. 14. 08:53

 

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 생성

urls.py&views.py&templates/profile.html&templates/users.html

 

 

App(articles, users) 내 urls.py

users/urls.py
articles/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

back_to_the_zero/urls.py

 

 

 

다른 URLconf 모듈 포함(include)

프로젝트의 urls에 Include를 통해 분리한 app의 경로 포함

 

include되는 urls에는 반드시 urlpatterns가 필요함(빈 리스트 가능)

  1. 프로젝트의 urls.py에서 앱의 디렉토리 패턴과 일치함을 발견
  2. 앱의 urls.py로 다음 처리를 이관
  3. 앱의 urls.py에서 이후 디렉토리 패턴과 일치하는 url 패턴을 탐색
  4. 일치한다면 해당 views로 가서 처리

 

 

View 함수와 템플릿 연결

articles/views.py- 템플릿을 사용하지 않은 index.html

 

users/views.py

 

  • View 함수는 URL에서 받은 username을 템플릿에 전달
  • context 딕셔너리를 사용해 데이터 템플릿에 전달

 

 

 

템플릿

users/templates/profile.html
articles/templates/data_throw.html
articles/templates/data_catch.html
articles/templates/hello.html
users/templates/users.html

 

 

 

 

앱 간 템플릿 정리

 

 앱 별로 템플릿 폴더를 나눔

 앱 폴더 내에 templates 디렉토리를 생성

 TEMPLATES 설정에서 APP_DIRS True여야 Django가 앱 템플릿을 자동 탐색

 

 

 

 

/index/

 

 

 

 

 

*Trailing Slash (슬래시 구분)

 

  • /
    디렉토리로 인식
  • //
    파일로 인식

 

 

Django는 기본적으로 URL 끝에 /를 붙이는 방식을 채택

 

APPEND_SLASH=True (기본값)

/ 없는 URL 요청을 /로 자동 리다이렉션

 

변경이 필요 없다면 기본 설정 유지 추천

 

 

VSCode 코드 이동 단축키(MacOS)

 

Option + 위/아래 방향키

 

 

 

 

URL Dispatcher 공식문서

 

URL dispatcher | Django documentation

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

 

'∟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