Django

url 변수, 앱 분리, Naming URL Patterns(장고)

zhelddustmq 2024. 8. 13. 12:26

1. Variable Routing

2. 다중 앱

3. Naming URL Patterns

 

 

1. url 변수(Variable Routing): URL 일부를 변수로 지정하여, 해당 부분에 들어온 값을 view로 넘겨주고, view에서 변수를 받아서 그 부분에 맞게 처리하도록 할 수 있음.

→ 하나의 URL에 마음껏 여러 페이지 연결 가능

이때 str:을 안붙여도 디폴드 값이 str이기 때문에 없이 써도 됨
저 url에서 받은 값을 view의 profile함수에 username이란 변수로 전달
context로 담아서 render함수 파라미터로 넘겨주고, profile.html작성

 

2. 다중 앱(Multiple Apps): 하나의 프로젝트는 여러개의 앱으로 구성됨. 각각의 기능별로 나누어서 App으로 분리하는 것이 좋은 구조

 

기능분리가 안됨.
users라는 app 하나 생성

Urls 분리하기

  • django가 기본적으로 생성해주지 않기 때문에 직접 생성해야 함

각각의 app 폴더 안쪽에 urls.py 이름으로 파일 생성

# urls.py 기본 세팅 
from django.urls import path
urlpatterns = [
    
]

다른 URLconf 모듈을 포함하기 (include)

  • django의 urls는 다른 urls를 포함할 수 있음
  • 프로젝트의 urls에 include를 통해 우리가 분리한 app의 경로를 포함

urls 연결하기

  • include되는 urls에는 반드시 urlpatterns 가 필요 (빈 리스트이더라도 있어야 함)
  • articles/test/ 로 요청이 들어오면 아래의 흐름을 따름
    1. 프로젝트의 urls.py 에서 articles/ 패턴과 일치함을 발견
    2. articles 앱의 urls.py로 다음 처리를 넘김
    3. articles앱의 urls.py에서 test/ 패턴과 일치하는 url 패턴을 탐색
    4. 일치하면 해당 views로 가서 처리

url 정리하기

url 옮기기

  • (문제) 현재는 users/users/~~~ 으로 접근을 해야함.
    → url을 수정할 필요가 있습니다.

users의 urls.py 경로에서 users날려버리기~

 

views 옮기기

각 App에 맞게 view를 옮김

templates 옮기기

  • users앱에도 templates 디렉토리를 생성하고 필요한 template을 옮김

 

 

 

3. Naming URL Patterns: 어떠한 URL을 작성할 때 직접 하드코딩 하지 않고 각각의 URL에 ‘이름’을 붙여주는 것(특정 경로에 대한 의존성 제거)

- 이전에 hello/ 가 지금은 articles/hello/ 로 바뀌었기 때문에 이에 관한 경로코드도 수정해야하는 번거로움이 있음

 

- path() 함수의 name 파라미터 사용

  • URL이름 사용하기
  • 이제 직접 URL을 하드코딩 하지 않아도 됨

원래는 이렇게 직접 모든 URL을 적어야 한다면
이제는 URL을 이름으로 참조할 수 있음

 

'Django' 카테고리의 다른 글

ORM(Django)  (0) 2024.08.14
모델 및 마이그레이션  (0) 2024.08.14
Django GET 메서드 기초  (0) 2024.08.12
Django Template System 기초  (0) 2024.08.09
장고를 이용한 처음 세팅  (0) 2024.08.08