Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- #TIL #Today I Learned #기록 #회고 #ternary statement #swich statement #스위치 반복문 #
- 고스트 블로그 #
- 자바스크립트 #javascript #datatype #데이터타입 #자료형
- 웹페이지제작 #
- 기록 #회고
- hackerrank #python #algorithm #해커랭크 #파이썬 #알고리즘
- single source of truth란 #single source of truth #자료의중복 #자료의비정합성 #비정합성 #리팩토링
- javascript '===' #javascript #TIL #Today I Learned #기록 #회고
- Hackerrank #해커랭크 #python #파이썬 #알고리즘 #Algorithm
- javascript #event #onclick #js
- 강의 #느낀점 #snowfox #스노우폭스 #김승호회장
- TIL #Today I Learned # 기록 # 회고 #Udemy
- javascript #statement #expression #difference
- 블로그만들기 #웹사이트만들기 #
- 불리언 #Boolean #number #string #symbol #null #undefined
- 블로그 셀프제작
- TIL #Today I Learned #
Archives
- Today
- Total
well-balanced
[Django tutorial] 하드코딩된 URL 개선 본문
Django에서는 Template Language를 활용해 urls.py 파일에서 지정해둔 name 값을 통해 url을 가져올 수 있다. 이는 path에 변동이 있을 때 template에도 동적으로 변화를 준다.
기존 하드 코딩된 url path
<li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
template 언어를 활용해서 urls의 path를 지정된 name 값으로 가져오는 모습
<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>
path('<int:question_id>/', views.detail, name='detail'),
...
# added the word 'specifics'
path('specifics/<int:question_id>/', views.detail, name='detail'),
...
위와 같이 경로가 바뀔 때 template에도 동적으로 적용된다.
이건 프로젝트라서 app의 개수가 1개지만, 실제 장고 프로젝트에서는 app의 개수가 10개, 20개 혹은 그 이상이 될 지도 모른다. 이럴 때 NameSpace를 써줘야한다. urls.py을 아래와 같이 고쳐보자.
from django.urls import path
from . import views
app_name = 'polls' # App name을 추가
urlpatterns = [
path('', views.index, name='index'),
path('<int:question_id>/', views.detail, name="detail"),
path('<int:question_id>/results', views.results, name="results"),
path('<int:question_id>/vote', views.vote, name="vote")
]
그리고 template을 아래와 같이 수정해보자.
<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
{% url 'app_name:url_name' [parameter] %} 의 형태로 작성하면 되고, 'app_name:url_name' 에서 반드시 사이에 공백이 없는 상태로 작성해줘야 한다.
참고한 사이트: https://docs.djangoproject.com/en/3.0/intro/tutorial03/#removing-hardcoded-urls-in-templates
'Python' 카테고리의 다른 글
[Django tutorial] 장고 테스트 자동화 (0) | 2020.02.01 |
---|---|
[Django Tutorial] choice_set란? (Related objects) (9) | 2020.01.31 |
[python] tkinter와 random 모듈을 이용한 이미지 만들기 (0) | 2019.03.03 |
[python]Window 가상환경 구축 django 설치 (0) | 2019.02.25 |
[python] 미니 프로그램 만들기 (달에서의 몸무게) (0) | 2018.12.25 |
Comments