처음에는 많이 어려웠던 장고.. 지금은?
Django, 장고 프로젝트를 진행하면서 모르는 부분이 많았지만 참고 자료도 많이 찾아보고 오류도 해결하면서 조금씩 장고에 대해 알아갔습니다.
프로젝트 중반이 넘어가면서도 아직 이해가 되지 않는 부분도 있었지만 그래도 처음보다는 많이 나아진 것 같습니다.
그래도 아직 기초단계일 뿐이라 그렇게 많이 알고 있진 않았기에 더 많은 경험을 해봐야만 숙달될 수 있을 것 같습니다.
장고 프로젝트 진행 중!
우선 제가 담당했던 역할은 하나의 영화에 대한 상세 페이지 부분 중 댓글에 대한 기능을 담당했습니다.
맨 처음에는 확인차 부트스트랩을 사용하며 html을 구성해보면서 댓글 기능이 잘 돼가는지 확인을 해보고 싶었기 때문에 admin 페이지에서 댓글에 관한 데이터를 넣어준 뒤 테스트를 해보았습니다.

테스트용 데이터들을 넣어주고 runserver를 해준 뒤 확인해본 결과 잘 나오는 것을 확인할 수 있었습니다.

댓글이 잘 보이는 것을 확인했으니 임시용으로 사용하고 있던 부트스트랩을 제거하고 css파일을 만들어서 위치를 다시 설정해주었습니다.

다른 팀원분들의 코드를 합쳐보면서 일어났던 오류들도 해결해보려고 노력하는 과정도 겪어보고, 해당 오류가 왜 일어났던 것인지도 알아가면서 코드를 구현했습니다.

해당 에러는 각 앱에 있는 models.py에서 서로 간의 모델을 import 하려다 보니 생기던 오류였습니다.
그렇다고 한쪽의 import를 지우려고 하니 ForeignKey로 연결된 부분이 해제되기 때문에 다른 방법으로 모델을 연결해주는 방향으로 해결했습니다.
마지막으로 댓글이 많아지면 페이지로 나눠줄 수 있도록 페이징 기능을 구현하고자 코드를 바꿔주었습니다.
{# 작성된 댓글 불러오기 #}
{% for comment in comment_list %}
<div class="comment_list">
<div class="name_and_delete">
<h4> {{ comment.user }} </h4>
<a href="/movie/comment/delete/{{ comment.id }}">
<span>삭제</span>
</a>
</div>
<div class="comment_and_rate">
<p> {{ comment.comment }} </p>
<p> {{ comment.user_rate }} 점 <span> - {{ comment.created_at | timesince }} 전</span></p>
</div>
</div>
{% endfor %}
<ul class="comment_list_ul">
<!-- 이전 페이지 -->
{% if comment_list.has_previous %}
<li>
<a href="?page={{ comment_list.previous_page_number }}">이전</a>
</li>
{% else %}
<li>
<a tabindex="-1" aria-disabled="true" href="#">이전</a>
</li>
{% endif %}
<!-- 페이지 리스트 -->
{% for page_number in comment_list.paginator.page_range %}
{% if page_number == comment_list.number %}
<li aria-current="page">
<a href="?page={{ page_number }}">{{ page_number }}</a>
</li>
{% else %}
<li>
<a href="?page={{ page_number }}">{{ page_number }}</a>
</li>
{% endif %}
{% endfor %}
<!-- 다음 페이지 -->
{% if comment_list.has_next %}
<li>
<a href="?page={{ comment_list.next_page_number }}">다음</a>
</li>
{% else %}
<li>
<a tabindex="-1" aria-disabled="true" href="#">다음</a>
</li>
{% endif %}
</ul>
페이징 기능을 위한 html을 만들어주고 views.py에서 페이징 기능을 만들어 주었습니다.
# 댓글 보여주기(페이징)
def comment_paging(request, id):
page = request.GET.get('page', '1')
comment_list = MovieComment.objects.filter(movie=id).order_by('-created_at')
paginator = Paginator(comment_list, 5)
comments = paginator.get_page(page)
return render(request, 'comment_list.html', {'comment_list': comments})
그리고 해당 페이징 기능을 확인하려면 데이터가 더 많이 필요하기 때문에 기존에 있던 데이터에 추가해서 다른 데이터들도 만들어주었습니다.

그리고 runserver를 해준 뒤 웹 페이지에서 확인해보니 다음과 같은 화면을 볼 수 있었습니다.

앞으로 무엇을 해야 할까?
장고 코드를 구현하면서 해당 부분에 대한 시간이 많이 걸리긴 했지만 그래도 처음보다는 많이 나아졌다는 느낌이 들었습니다.
이제 거의 댓글 기능도 구현해두었고, 점차 프로젝트 종료일도 다가오고 있기에 다른 팀원들의 코드와 병합을 마치면서 최종 점검을 앞두고 있습니다.
오늘 잠깐의 시간을 사용해서 VSCode의 LiveShare을 사용하여 하나의 프로젝트에 코드를 합쳐보기도 해 보았습니다.
그런데 처음 사용해보는 결과 때문인지는 모르겠지만 가상 환경(venv)에 설치한 모듈들이 정상적으로 작동하지 않아서 다소 당혹스러운 상황을 마주했습니다.
프로젝트 종료일을 생각하면 주말을 이용해 코드를 합치고 오류가 발생하는 부분을 고치면서 이번 프로젝트를 완성하고자 합니다.
'TIL 및 WIL > WIL (Week I Learned)' 카테고리의 다른 글
| [WIL] 22.06.20 ~ 22.06.24 (Django 심화 DRF 연습) (0) | 2022.06.24 |
|---|---|
| [WIL] 22.06.13 ~ 22.06.17 (Django 추천 시스템 프로젝트 끝, 장고 심화 DRF) (0) | 2022.06.17 |
| [WIL] 22.05.30 ~ 22.06.03 (Django 기초, Django 팀 프로젝트 시작) (0) | 2022.06.03 |
| [WIL] 22.05.23 ~ 22.05.27 (사물인식 팀 프로젝트 끝, Django 시작) (0) | 2022.05.27 |
| [WIL] 22.05.16 ~ 22.05.20 (머신러닝 강의, 사물인식 팀 프로젝트) (0) | 2022.05.20 |