• [Django] Project02 - REST API 만들기

    REST API를 만들어보자. REST란 Representational State Transfer의 약자로 자원을 이름으로 구분하여 상태를 주고 받는 것을 의미한다. 내 나름대로 쉽게 이해하기 위해 설명하자면, Http URI에는 자원의 이름을 명시하고 Http Method를 통해 자원의 CRUD 동작을 결정하는 것이다. 예를 들자면, 학생에 대한 정보를 조회하는 웹 페이지가 있다면 URI에는 이에 해당하는 명사인 students, Method에는...


  • [Django] Project02 - 새로운 프로젝트 생성 및 환경 구성

    첫 번째 개인 프로젝트인 인스타그램 따라하기에 이어 이번에는 영화 추천 웹 페이지를 만들어보고자 한다. 인스타그램 웹 페이지를 만들 때에는 한 가지 기능을 구현할 때마다 새로운 요청 url을 만들었다. 그리고 그 기능의 수행이 완료되면 리디렉션을 하는 구간이 굉장히 많았다. Django만을 이용했기 때문에 발생하는 이런 불편하고 깔끔하지 못한 상황을 어느 정도 해결하기...


  • [Django] Project01 - 게시물 좋아요 기능 구현

    sns의 중요한 기능 중 하나가 좋아요 기능일 것이다. 이미 Post 모델을 구현할 때 이 기능을 염두해 두고 만들었다. class Post(models.Model): content = models.CharField(max_length=300) image = models.ImageField(blank=True, upload_to="posts") user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="posts") like_users = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name="like_posts", blank=True) like_users 필드를 이용하여 좋아요 기능을 만들어볼 것이다. 1. urls.py 경로 추가 posts 앱...


  • [Django] Project01 - Comment 모델을 생성하여 댓글 기능 추가

    Post 모델을 구성하여 게시물을 작성하고, 수정하고, 삭제하는 기능을 구현해봤다. 이제 이 게시물에 댓글을 달 수 있게 만들어볼 것이다. 1. models.py에 Comment 모델 구현 posts 앱 내의 models.py에 Comment 모델을 구현할 것이다. # models.py ... class Comment(models.Model): content = models.CharField(max_length=200) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name="comments") def __str__(self):...


  • [Django] Project01 - 포스트 수정 및 삭제하기

    이번에는 작성한 포스트를 수정하고 삭제하는 기능을 구현해볼 것이다. 우리가 만들었던 Post 모델은 아래와 같다. class Post(models.Model): content = models.CharField(max_length=300, blank=True) image = models.ImageField(blank=True, upload_to='posts') user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="posts") like_users = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name="like_posts", blank=True) 네 개의 필드 중 우리가 수정할 필요가 있는 부분은 content와 image 이다. 나머지는 포스트를 작성할 때,...