스터디/Web
[Django] 모델 만들고 페이지에서 조회하기
sollllllll
2022. 1. 13. 00:14
참고: https://wikidocs.net/70650
이전 글에서 모델을 만들고 migrate 해서 앱에 적용하는 방법까지 배웠다.
이것을 내 프로젝트에 적용해서 모델을 만들고 데이터를 조회하는 페이지를 만들어보도록 하겠다.
(1) 모델 만들기 (models.py 파일 작성)
모델 > User 테이블
속성명 | 데이터타입 |
userId (PK) | int |
userEmail | varchar(30) |
userPw | varchar(20) |
userName | varchar(20) |
모델 > Review 테이블
속성명 | 데이터타입 |
reviewId (PK) | int |
userId (FK) | int |
bookId | varchar(30) |
reviewTxt | text |
다음의 속성을 가진 유저 테이블과 서평 테이블을 생성한다.
class User(models.Model):
userId = models.IntegerField(primary_key=True)
userEmail = models.CharField(max_length=30)
userPw = models.CharField(max_length=20)
userName = models.CharField(max_length=20)
# userId를 기본으로 반환한다
def __int__(self):
return self.userId
class Review(models.Model):
userId = models.ForeignKey(User, on_delete=models.CASCADE)
bookId = models.CharField(max_length=30)
reviewId = models.IntegerField(primary_key=True)
reviewTxt = models.TextField()
# reviewId를 기본으로 반환한다
def __int__(self):
return self.reviewId
(2) urls.py 파일 수정
urlpatterns = [
...
path('', views.list, name='list'),
...
]
서평 앱의 기본 경로로 접속하면 데이터 목록을 볼 수 있도록 한다.
(3) views.py 파일 수정
def list(request):
review_list = Review.objects.order_by('-reviewId')
context = {'review_list': review_list}
return render(request, 'review/list.html', context)
reviewId의 역순으로 데이터를 정렬해 페이지에 띄우도록 조회 과정에 order_by('-속성') 를 추가했다.
모델에서 데이터를 받아와 list.html 로 전달한다. (context 사용)
(4) list.html 파일 작성
{% if review_list %}
<ol>
{% for review in review_list %}
<li><a href="/review/{{ review.reviewId }}/">
<div>
제목 - Id: {{ review.reviewId }} <br>
책 제목 - ISBN: {{ review.bookId }} <br>
{{ review.reviewTxt }}
</div>
</a></li>
{% endfor %}
</ol>
{% else %}
<p>서평이 없습니다.</p>
{% endif %}
조건문을 통해 전달받은 review_list 가 있는지 판별하고 있으면 데이터 목록을 띄우고
만약 없다면 데이터가 없다는 문구를 띄운다.
이 과정을 거치면 다음의 결과를 얻을 수 있다.