Dnote 5 - 1. Django - 권한 설정 및 로그인 / 회원가입 구현

killi8n·2018년 9월 23일
1

Dnote

목록 보기
11/15
post-thumbnail

일단 권한을 설정 해야 하니까, Django로 돌아옵시다.

django-rest-knox 라는 패키지를 다운로드 해야합니다.

settings.py

이제 기본 권한을 설정했으니, notes 모델에서 owner 필드를 추가해주겠습니다.

notes/models.py

User 모델을 가져온뒤, foreign key로 설정했네요.

그리고 모델을 수정했으니 다시한번 migrate 해줍니다.

views.py에서는 모든 노트를 불러왔던것을 이제 owner별로 불러오는 작업을 해주겠습니다. 그리고, 노트를 만들때, owner 필드에 값을 넣어야겠죠?

notes/views.py

자 이제, 회원가입 및 로그인에 대한 API 구현을 해보겠습니다.

notes/serializers.py

위와같이 serializer를 만들고,

notes/views.py

serializer들도 만들어 줍니다.

notes/urls.py

이렇게 url 라우팅도 해주면 장고작업은 끝이납니다.

postman 에서 body에 raw -> JSON형태로

를 넣어주시고, http://localhost:8000/api/auth/register/http://localhost:8000/api/auth/login/ 을 POST 방식으로 실행하면 잘 실행이 될것입니다.

또한 접속된 유저 정보를 보기 위해서는, http://localhost:8000/api/auth/user/ 로 Headers 에 Authorization 항목을 넣고 token 토큰값 으로 GET 실행 하면 유저 정보가 뜨게됩니다.

마지막으로 로그아웃을 구현하는것은 간단합니다.

d_note/urls.py

다음과 같이 설정하면, /api/auth/logout/ 으로 Authorization: token 토큰값 으로 실행하면 로그아웃이 됩니다.

profile
killi8n

1개의 댓글

comment-user-thumbnail
2019년 9월 21일

본문 내용을 따라하다가 오류 나는 부분 적어 놓습니다.
1. knox 오류는 jooh님 댓글대로 처리하시면 됩니다.
2. view.py 에서 from restframework import viewsets, permissions, generics, status 바꿔 주셔야 해요., status 함수가 import 되지 않았습니다. - RegistrationAPI 에 사용됨
3. d_note/urls.py 부분인데요. 2.0으로 넘어가면서 url이 바뀌었는데 혼용해서 쓰고 있습니다.

...
from django.urls import path

...
from django.conf.urls import include, url <--더이상 사용 안하는 구문

이부분은
from django.urls import path, include

이렇게 한줄로 바꾸고, 아래의 url은 더이상 안쓰는게 맞습니다. 정규식을 쓰려면 re_path 를 추가 하시고 쓰시면 됩니다.

urlpatterns = [
path("admin/", admin.site.urls),
url(r"^api/", include(urls)),
url(r"^api/auth", include("knox.urls")),
]
이부분은

urlpatterns = [
path("admin/", admin.site.urls),
path("api/", include(urls)),
path("api/auth", include("knox.urls")),
]

이렇게 수정하시면 됩니다.

답글 달기