Study/django

django - Namespace

1. URL 별칭 사용하기

from django.urls import path
from . import views

urlpatterns = [
   path('', views.index, name='index'),
   path('<int:question_id>/', views.detail, name='detail'),
]
  • pybo/url.py에 name속성을 사용해서 별칭을 만들어준다.
  • 이렇게 수정하면 /pybo/라는 주소에는 index라는 별칭이, /pybo/2/ 라는 주소에는 detail 이라는 별칭이 생긴다.

 

2. 템플릿에서 별칭사용하기

/*--- 생략 ---*/

{% for question in question_list %}
   <li><a href="{% url 'detail' question.id %}">{{ question.subject }}</a></li>
{% endfor %}

/*--- 생략 ---*/

 

3. URL 중복방지

  • 서로다른 앱에서 똑같은 별칭을 사용할 경우 중복오류가 발생할 수 있다. 
  • 이런 경우를 대비해서 pybo/urls.py에서 app_name 변수에 네임스페이스를 지정해준다. 
from django.urls import path
from . imort veiws

app_name = 'pybo'

urlpatterns = [
   path('', views.index, name='index'),
   path('<int:question_id>/', views.detail, name='detail'),
]
/*--- 생략 ---*/

{% for question in question_list %}
   <li><a href="{% url 'pybo:detail' question.id %}">{{ question.subject }}</a></li>
{% endfor %}

/*--- 생략 ---*/
  • 네임스페이스를 지정하고나면 템플릿 페이지 요청시 다시 오류가 발생한다. 
  • 네임스페이스를 지정한 후에는 템플릿 페이지에서 별칭을 사용할때 방법이 달라진다. 
  • 여기서는 'pybo:detail' 로 사용해주면 된다. 

 

 

 

 

위 문서는 이지스퍼블리싱에서 출간한 박응용님의 "점프투 장고"를 제가 공부하면서 요약한 내용입니다.
게시한 내용은 공부를 하면서 저만 알아볼 수 있게 요약한 부분들도 많으므로 부족한 내용은
직접 책을 구입하셔서 보시면 좋을 것 같습니다.

 

 

 

'Study > django' 카테고리의 다른 글

django - CSS  (0) 2021.09.25
django - Answerform  (0) 2021.09.25
django - QuestionContent  (0) 2021.09.25
django - QuestionTitleList  (0) 2021.09.25
django - Admin  (0) 2021.09.25