DRF 로그인을 위한 API 개발명세를 작성하세요(5분)
view 이름 | endpoint | http method | request | response |
---|---|---|---|---|
DRF 로그인을 위한 URL을 작성하세요(1분)
DRF 로그인을 위한 VIEW를 작성하세요(3분)
DRF 로그아웃을 위한 API 개발명세를 작성하세요(5분)
DRF 로그아웃을 위한 URL을 작성하세요
DRF 로그아웃을 위한 VIEW를 작성하세요(5분)
view 이름 | endpoint | http method | request | response | reponse2 |
---|---|---|---|---|---|
UserAPIView | user/login/ | POST | { |
“username” : “admin”,
“password” : “123”
} | Response("error": "존재하지 않는 계정이거나 패스워드가 일치하지 않습니다.") | Response(”로그인 성공”) |
view 이름 | endpoint | http method | request | response | response1 | response3 |
---|---|---|---|---|---|---|
UserAPIView | login/ | POST | { |
”username”:”admin”,
”password”:”1234”,
} | ({”message”:”로그인 완료”}) | ({”message”:”존재하지 않는 계정이거나 비밀번호가 맞지 않습니다”}) | ({”message”:”데이터를 모두 입력하세요”}) |
view 이름 | endpoint | http method | request | response | response2 | response3 |
---|---|---|---|---|---|---|
UserSignView | /user/sign | POST | { |
‘username’ : ‘user1’,
‘password’: ‘123’
} | status_200 :
{
‘msg’ : ‘로그인 성공! 환영합니다 {USER} 님!’
} |
{
‘error’ : ‘이미 존재하는 아이디입니다.’’
} |
{
‘error’ : ‘내용을 빠짐없이 입력해주세요’
} |
from django.urls import path
from . import views
urlpatterns = [
path('', views.UserView.as_view()),
path('sign/', views.UserSignView.as_view()),
]
class UserSignView(APIView):
# 로그인
def post(self, request):
username = request.data.get('username')
password = request.data.get('password')
me = authenticate(request, username=username, password=password)
print(f"me->{me}")
if not me:
return Response("유저가 없습니다.")
login(request, me)
return Response(f"로그인 성공! 환영합니다. {username}님")
view 이름 | endpoint | http method | request | response |
---|---|---|---|---|
UserAPIView | user/logout/ | DELETE | Response("message": "로그아웃 성공!!”") |
view 이름 | endpoint | http method | request | response |
---|---|---|---|---|
UserSignView | /user/sign | DELETE | status_200 : |
{
‘msg’ : ‘로그아웃 되었습니다. {user}님 안녕히.’
} |
view 이름 | endpoint | http method | request | response |
---|---|---|---|---|
UserAPIView | logout/ | DELETE | ({”message”:”로그아웃 완료”}) |
로그인과 같은 CBV를 사용하므로 URL은 동일하다.
# 로그아웃
def delete(self, request):
user = request.user
logout(request)
return Response(f"로그아웃 되었습니다.{user}님 안녕히가세요!")