파이썬으로 장고(Django) 공략하기: 입문 강의를 정리한 내용입니다.
query parameter를 path parameter 형식으로 변경
- query parameter 형식의 url 패턴을 path parameter 형식으로 수정해보자.
- urls.py에서 detail 화면을 path parameter 형식으로 수정하면 다음과 같다.
# third/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('list/', views.list, name="list"),
path('create/', views.create, name="restaurant-create"),
path('update/', views.update, name="restaurant-update"),
path('delete/', views.delete, name="restaurant-delete"),
# path('detail/', views.detail, name="restaurant-detail"), query parameter
path('restaurant/<int:id>/', views.detail, name="restaurant-detail"), # path parameter
]
- path parameter으로 수정하면 view 메소드에서 파라미터로 id를 받을 수 있고, id 값을 얻기 위해 request.GET.get을 사용하지 않아도 된다.
# third/views.py
def detail(request, id): # path parameter로 선언하면 id를 받을 수 있음
if 'id' is not None:
# item = get_object_or_404(Restaurant, pk=request.GET.get('id'))
item = get_object_or_404(Restaurant, pk=id)
return render(request, 'third/detail.html', {'item': item})
return HttpResponseRedirect('/third/list/')
- 마지막으로 자세히보기 링크를 다음과 같이 수정하면 된다.
<!-- third/templates/third/list.html -->
<!-- <a href="{% url 'restaurant-detail' %}?id={{ item.id }}" class="card-link">자세히보기</a> -->
<a href="{% url 'restaurant-detail' id=item.id %}" class="card-link">자세히 보기</a>