22. 09. 30.

hyo_d·2022년 9월 30일

캠프 23일차

1. 일과

👉 장고 클론코딩 2일차

👉 프로젝트 S.A 피드백 수렴/보완

2. 장고 클론코딩 2일차

1) 구현한 기능

  • 게시글 상세 페이지에서 댓글을 확인하고 작성/삭제 할 수 있음
    • 댓글 작성자와 작성된지 얼마나 경과됐는지 확인 가능
  • 댓글은 작성된 역순으로 정렬됨
  • 댓글 작성자는 본인의 댓글을 삭제 할 수 있음

2) 코드 설명

  • 댓글 기능을 위해 content앱에 댓글 모델을 추가한다.
  • 게시글과 작성자는 각각 ContentModel과 UserModel에서 ForeignKey로 사용한다.
  • 작성된지 얼마나 경과됐는지 확인 할 수 있도록 created_at과 updated_at은 DateTimeField를 사용했다.(updated_at-created_at=경과시간)
# content/models.py

class contentComment(models.Model):
    class Meta:
        db_table = "comment"

    content = models.ForeignKey(contentModel, on_delete=models.CASCADE)
    author = models.ForeignKey(UserModel, on_delete=models.CASCADE)
    comment = models.CharField(max_length=256)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
  • 댓글 작성/삭제 기능을 추가하기 위해 url을 설정해주었다.
# content/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('content/<int:id>',views.detail_comment,name='detail-content'), # 해당 번호의 게시글과 댓글들 읽어오기
    path('content/comment/<int:id>',views.write_comment, name='write-comment'), # 해당 id 트윗에 댓글을 작성
    path('content/comment/delete/<int:id>',views.delete_comment, name='delete-comment'), # 해당 번호 댓글 삭제
]
  • 게시글 상세 페이지를 먼저 구성해주었다. 작성된 댓글들은 -created_at 을 사용해서 시간순(역순)으로 정렬 될 수 있도록 했다.
# content/views.py

from django.shortcuts import render, redirect
from .models import ContentModel, ContentComment
from django.contrib.auth.decorators import login_required

# 게시글 상세 페이지
@login_required
def detail_content(request, id):
    my_content = ContentModel.objects.get(id=id)
    content_comment = ContentComment.objects.filter(content_id=id).order_by('-created_at')
    return render(request, 'content/content_detail.html', {'content': my_content, 'comment': content_comment})
  • 댓글 작성 시 바로 게시글 상세페이지에 추가되어 볼 수 있도록 하였다.
# 댓글 작성
@login_required
def write_comment(request, id):
    if request.method == 'POST':
        comment = request.POST.get("comment", "")
        current_content = ContentModel.objects.get(id=id)

        CC = ContentComment()
        CC.comment = comment
        CC.author = request.user
        CC.content = current_content
        CC.save()

        return redirect('/content/'+str(id))
  • delete방식을 사용해 댓글 삭제 기능을 구현했다.
# 댓글 삭제
@login_required
def delete_comment(request, id):
    comment = ContentComment.objects.get(id=id)
    current_content = comment.content.id
    comment.delete()
    return redirect('/content/'+str(current_content))

3) 진행 내용

  • 내 코드를 다 작성하였고 pull Request를 했다. 모든 팀원들이 맡은 기능들을 다 구현해서 최종적으로 머지가 완료되면 다시 한번 검토할 예정이다.

3. 프로젝트 S.A 피드백 수렴/보완

  • Figma로는 와이어프레임만 제작하고 erd와 전반적인 내용은 별도로 작성하고 보완 필요
    👉 노션을 생성하여 전체적인 내용 보완 및 추가 완료

🤔 회고

  • 한번 잘 풀리면 집중도 잘되고 재밌는데 잘 안풀릴때는 집중하는게 어렵다. 그래도 오류가 발생한다고해서 포기하기보다는 어떻게든 빨리 해결하고 싶어서 계속 파고들고 흥미를 느낀다는 점은 다행인 것 같다.
  • 캠프 5주차가 끝났다. 캠프 첫 시작할때만 해도 12시간 앉아있는게 많이 힘들고 피곤했는데 이제 어느정도 적응된 것 같다. 파이썬에 대한 이해도 장고에 대한 이해도 아직 많이 부족하지만 약한 생각 안하고 잘 하고 있는 내 스스로가 대견하고 뿌듯하다✌
profile
햇병아리

0개의 댓글