django

django url pattern

발전생 2020. 12. 17. 19:36

프로젝트 폴더 urls.py

(주석에도 잘 설명되어 있지만 다시 한 번 정리)

프로젝트 level의 urls.py 에서는 include() 함수를 사용해서 특정 패턴으로 시작하는 url을 app level의 urls.py로 넘긴다.

 

 

app 폴더 urls.py

app level urls.py에서는 특정 url 패턴을 찾아내서 views.py에서 정의한 함수에 넘겨줘야 한다.

 

url에 매개변수를 넣고자 하는 경우 <int:pk>처럼 사용하면 된다.

path("customer/<int:pk>/", views.customer),

 

url path에 name 키워드 매개변수 사용

주석에도 나와있듯이 path에 name을 지정해주면 어느 template에서든 간단하게 url로 연결시킬 수 있다.

즉, url을 hard하게 짤 필요가 없어진다.

hard한 url

이 예에서는 a 태그의 href 속성에 hard하게 url을 적어줬다.

하지만 url path의 매개변수로 name을 넣어주면 {% url 'products' %}을 사용할 수 있다.

urlpattterns에서 path를 고쳐도 template 파일에서는 href 속성을 바꿔줄 필요가 없다는 장점이 있다.

temlate 언어를 사용한 url

 

 

예제에서는 urlpattern을 많이 안 나눴는데 하나의 예를 생각해보자.

회사 A가 자기 회사 소개 페이지와 forum 페이지를 같은 도메인에서 제공하고 싶다고 해보자.

그러면 project level에서는 admin 외에도 최소 2개의 path가 필요하다.

urlpatterns = [
	path('admin/', admin.site.urls),
    path('', include('home.urls'),
    path('forum/', include('forum.urls'),
]

이런 식으로 urlpattern을 만들 수 있겠다.

 

참고 자료

https://www.youtube.com/watch?v=QvTyqta3OJo&list=PL-51WBLyFTg2vW-_6XBoUpE7vpmoR3ztO&index=2

https://www.youtube.com/watch?v=HsyPaQ_B8kY&list=PL-51WBLyFTg2vW-_6XBoUpE7vpmoR3ztO&index=10