TIL

TIL(20.06.16) - blog project 마무리

sincerely10 2020. 6. 17. 00:18
반응형

Pre bootcamp로 blog Project를 1차적으로 마무리 했습니다.
매끄러운 순서는 아니지만 수정사항과 추가된 기능에 대한 서술을 하겠습니다.

1. 수정사항(Back-end)

지난번 아키텍처를 일부 수정하였습니다.
수정 내용은 아래와 같습니다.

- kakao Authorization을 통한 로그인 구현
- AWS ec2 서버에 Front-end(React)와 Back-end(Django) 서비스 구동

React + Django로 구현한 blog APP

2. 스키마 구조

단순하지만, 스키마 구조는 다음과 같습니다.
글(post)을 관리하는 테이블인 'apis_posts'와 User를 관리하는 테이블인 'apis_users'가 있습니다.
그리고 users의 id는 posts의 UserID의 참조키(Foreign Key)가 됩니다.

스키마 구조

3. 화면 안내

- 완성된 화면의 예시는 다음과 같습니다.(메인페이지)

메인페이지

- 로그인한 후 메인페이지
개선할 점은 user에 해당하는 글 목록은 불러오지만 화면에 출력하게 구현 되지는 않았습니다.(메모 프로젝트에서 구현예정)

현재 단계에서 user가 작성한 글을 로그인 시, 바로 볼 수는 없지만,
아래 코드와 같이 request에서 받아온 parameter로 userInfo를 받아오고
id가 user 테이블에 없다면, user를 등록합니다.
반대로 있는 경우에 id가 중복으로 등록되지 않다는걸 이용해 예외처리로 user가 작성한 글 목록을 받아와 넘겨줍니다.

@api_view(['GET','POST'])
def oauth(request):
    if request.method == 'POST':
        user_data = JSONParser().parse(request)
        kakaoId = user_data["id"]
        kakaoNickname = user_data["kakao_account"]["profile"]["nickname"]
        kakaoEmail = user_data["kakao_account"]["email"]
        try:
            kakaoUser = Users.objects.create(id = kakaoId, name = kakaoNickname,\
            username = kakaoNickname, email = kakaoEmail)
            return JsonResponse({'message': 'Success!'})
        except Exception as e:
            posts = Posts.objects.all()
            posts = posts.filter(user_id__iexact = kakaoId)
            print(posts)
            posts_serializer = PostsSerializer(posts, many=True)
            return JsonResponse(posts_serializer.data, safe=False)

 

- users 페이지
글이 있는 유저정보만 보여줍니다.

- Post 작성 페이지
New Post를 클릭하면 다음과 같은 화면이 나옵니다.
글 작성후 SAVE를 클릭하면, POST 형태의 API를 받습니다.

4. Repository 안내

다음 링크에서 확인하실 수 있습니다.

github.com/sincerity10/blog-Project

 

반응형