일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 옹졸함
- 꼭읽어봐야할책
- Django
- MySQL
- git 업로드
- php
- Git
- 일일투자금액
- Python
- 나만의주식5법칙
- db
- 서울로가자
- linux명령어
- ChatGPT
- 공작과개미
- 지방사람이보는서울사람
- delete
- todolist
- 중용
- 클라우드
- 네인생우습지않다
- Face Detection
- OpenCV
- UPSERT
- 비밀번호변경
- 성선택
- 헬레나크로닌
- 훌륭한모국어
- 다산의마지막습관
- 독후감
- Today
- Total
Terry Very Good
<django RestaurantShare PJT> 맛집 상세정보 출력 (DB값에 따른 url 동적처리 방법) 본문
<django RestaurantShare PJT> 맛집 상세정보 출력 (DB값에 따른 url 동적처리 방법)
테리베리 2020. 12. 21. 14:53
위의 <왼쪽 그림>처럼 맛집을 추가하면, restaurant table에 data가 등록되고,
<오른쪽 그림>처럼 추가한 db가 보인다.
<오른쪽 그림>의 소스인 index.html의 restaurant table의 data 등록되는 부분을 살펴보면
{% for restaurant in restaurants %}
{% if restaurant.category == category %}
<div class = "input-group">
<span class="input-group-addon">
<input name="'checks" id="check{{restaurant.id}}" type="checkbox" value="{{restaurant.id}}">
</span>
<a href="restaurantDetail/{{restaurant.id}}">
<input name="res{{restaurant.id}}" id="res{{restaurant.id}}" type="text" class="form-control" disabled style="cursor:pointer;" value="{{restaurant.restaurant_name}}"></a>
</div>
{% endif %}
{% endfor %}
위와 같이 id나 href가 DB의 restaurant 테이블(모델)에 있는 id 값을 참조한다.
이 id 값은 초기 1부터 생성할때마다 1씩 올라간다.
즉, restaurant Data가 채워질 때마다 맛집 목록이 추가되고, 맛집에 대한 세부사항을 볼 수 있는 url이 추가된다.
이를 처리해주기 위해서 urls.py의 6번째 줄을 보면,
from django.urls import path, include
from . import views
urlpatterns = [
path('',views.index, name='index'),
path('restaurantDetail/<str:res_id>', views.restaurantDetail, name='resDetailPage'),
path('restaurantCreate/', views.restaurantCreate, name='resCreatePage'),
path('restaurantCreate/create', views.Create_restaurant, name='resCreate'),
path('categoryCreate/', views.categoryCreate, name='cateCreatePage'),
path('categoryCreate/create', views.Create_category, name='cateCreate'),
path('categoryCreate/delete', views.Delete_category, name='cateDelete'),
]
<str:res_id>의 형식으로 restaurantDetail/<str:res_id> 를 표현했다. 이렇게 꺽쇠로 표현된 것은 동적인 값을 의미한다.
그리고 꺽쇠 안에 있는 이름으로 서버에서 받아내겠다는 의미이다.
콜론을 중심으로 좌측에는 어떤 데이터 타입으로 받을 지를 결정해주며, 우측은 어떤 이름으로 받을 지를 결정해준다.
res_id에 대한 설정을 해줘야하므로 views.py로 가서
def restaurantDetail(request, res_id):
restaurant = Restaurant.objects.get(id = res_id)
content = {'restaurant': restaurant}
#return HttpResponse("restaurantDetail")
return render(request, 'shareRes/restaurantDetail.html', content)
와 같이 수정해준다.
그리고 http://127.0.0.1:8000/restaurantDetail/2 의 url로 접속해보면 아래와같이 잘 접속되는 것을 알 수 있다.
이제 restaurant의 id값이 2인 data의 내용을 빈칸에 넣어주는 소스만 작성해주면 완성되는데,
그러기 위해서는 restaurantDetail.html로 가서 아래처럼 채워준다.
<div class="content">
<div class="inputDiv">
<div class="input-group">
<span class="input-group-addon" id="sizing-addon2">카테고리</span>
<input id="resCategory" name="resCategory" type="text" class="form-control" disabled value="{{restaurant.category.category_name}}">
</div>
<div class="input-group">
<span class="input-group-addon" id="sizing-addon2">맛집 이름</span>
<input id="resTitle" name="resTitle" type="text" class="form-control" disabled value="{{restaurant.restaurant_name}}">
</div>
<div class="input-group">
<span class="input-group-addon" id="sizing-addon2">관련 링크</span>
<input id="resLink" name="resLink" type="text" class="form-control" disabled value="{{restaurant.restaurant_link}}">
</div>
<div class="input-group">
<span class="input-group-addon" id="sizing-addon2">상세 내용</span>
<textarea id="resContent" name="resContent" cols="90" rows="10" disabled>{{restaurant.restaurant_content}}</textarea>
</div>
<div class="input-group">
<span class="input-group-addon" id="sizing-addon2">장소 키워드</span>
<input id="resLoc" name="resLoc" type="text" class="form-control" disabled value="{{restaurant.restaurant_keyword}}">
</div>
<a href ="/" class="resAddBtn btn btn-info" role="button">홈으로</a>
</div>
</div>
그러면 아래와같이 완성.
'프로그래밍 > (WEB) DJANGO' 카테고리의 다른 글
<django RestaurantShare PJT> 맛집 상세정보 삭제하기(식당정보 DB DELETE) (0) | 2020.12.27 |
---|---|
<django RestaurantShare PJT> 맛집 상세정보 수정하기( 식당정보 DB UPDATE, 동적할당했던 URL로 돌아가기) (0) | 2020.12.27 |
[django RestaurantShare Project 1] URL & Templates Setting (0) | 2020.12.18 |
[Django Todolist 프로젝트 2] 완료한 항목 보이지 않게 하는 법(DB 삭제 없이) (0) | 2020.12.17 |
[Django Todolist 프로젝트 1] 가상환경, Git 세팅부터 구현까지(CRUD) (0) | 2020.12.16 |