Pre bootcamp로 blog Project를 1차적으로 마무리 했습니다.
매끄러운 순서는 아니지만 수정사항과 추가된 기능에 대한 서술을 하겠습니다.
1. 수정사항(Back-end)
지난번 아키텍처를 일부 수정하였습니다.
수정 내용은 아래와 같습니다.
- kakao Authorization을 통한 로그인 구현
- AWS ec2 서버에 Front-end(React)와 Back-end(Django) 서비스 구동
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
'TIL' 카테고리의 다른 글
TIL(20.06.18) - Python 기본(Python 자료형 - SET) (0) | 2020.06.18 |
---|---|
TIL(20.06.17-18) - Python 기본(Python 자료형 - List & Tuple) (0) | 2020.06.18 |
TIL(20.06.09) - blog project = Django + React (0) | 2020.06.10 |
TIL(20.06.07) - Django Rest Framework (0) | 2020.06.07 |
TIL(20.05.30) - Django MVC 패턴 (0) | 2020.05.30 |