Django 014 | WeStagram #6 Post

This Is Empty.·2021년 9월 25일
0

Django

목록 보기
15/20
post-thumbnail

WeStagram Posts app

  • 유저는 게시물을 등록할 수 있다.
    - 게시물에는 유저 아이디, 게시물 내용, 이미지, 게시된 시각이 포함된다.

1. Posts app 생성

다음의 명령어로 새 app을 생성한다.

settings.py에 app을 추가해준다.

westagram/urls.py에 app path를 추가한다.

2. models.py 작성


유저는 게시물을 등록할때 여러개의 사진을 등록할수도, 한 장의 사진만 등록할수도 있다.
따라서 postsimages 테이블을 분리해주어야 한다.(원자성에 위배되므로)

models.py를 다음과 같이 작성한다.

  • posts테이블의 user는 전에 만들었던 users테이블의 id를 참조한다.
  • images테이블의 postposts테이블의 id를 참조한다.

3. migrate

다음의 명령어로 생성한 모델을 마이그레이트 해준다.

  • 데이터베이스에 적용된 모습

4. Views.py

4-1. PostView : 게시물 등록 뷰

  1. import

  2. post생성하는 api 작성

    게시글은 회원가입한 유저만 작성할 수 있다. image는 여러장 첨부할 수 있으므로 반복문으로 image테이블에 image url을 저장해준다. 이때 post_id는 생성한 post의 id여야 한다.

  3. posts/urls.py를 생성하고 View path를 추가한다.

테스트


posts 테이블과 images 테이블에 잘 저장된 것을 확인할 수 있다.

4-2. GetAllPostsView : 모든 게시물 가져오는 뷰

  1. 게시물 가져오는 api 작성

    게시물을 나타낼 때에는 등록한 사람, 게시물, 게시된 내용, 게시된 시각이 포함되어야 한다.

  2. view path 추가

테스트


아까 저장했던 게시글 이외에도 전에 저장했던 게시글 또한 나오는것을 확인할 수 있다.

4-3. GetUserPostView : 유저가 작성한 모든 게시물을 가져오는 뷰

  1. 게시물 가져오는 api 작성

    request.GET['id']GET요청으로 들어온 id라는 파라미터를 받는 구문이다.
    예를 들어, https://westagram/posts/?id=2처럼 사용할 수 있다.

  2. view path 추가

테스트


id가 3인 유저가 작성한 모든 게시물을 가져온것을 확인 가능하다.

profile
Convinced myself, I seek not to convince.

0개의 댓글