본문 바로가기

Django48

16. Django DRF permission_classes를 활용한 접근 권한 설정 view에 접근 할 수 있는 요청을 drf의 permission_classes를 활용해 관리 할 수 있다. permissions.AllowAny : 모든 사용자를 대상으로 접근 허용 permissions.IsAuthenticated : 로그인 된 사용자를 대상으로 접근 허용 permissions.AllowAny : 모든 사용자를 대상으로 접근 허용 이외에도 다양한 permission class들이 존재 Custom permission 만들기 보통 permission의 경우 하나의 app에서 사용하는게 아닌 프로젝트 전체에서 사용되는 경우가 많아서 프로젝트 app에서 permissions.py를 만들어준다. 그리고 기존 permissions.py에서 마음에 드는거 아무거나 가져와서 붙여주고 views.py.. 2022. 6. 19.
15. Django DRF serializer 사용 방법 app에 serializers.py 파일을 만들어준다. from rest_framework import serializers class UserSErializer(serializers.ModelSerializer): class Meta: model = "" fields = "" 이때 Meta가 가장 중요하다. model과 field는 꼭 선언해줘야한다. 선언된 model에 지정된 field의 내용을 serializer가 json 형식으로 알려준다. #serializers.py from rest_framework import serializers from user.models import User as UserModel class UserSerializer(serializers.ModelSeri.. 2022. 6. 19.
14. Django DRF dir dir() - 객체이 존재하는 변수, 메소드 등을 출력해주는 함수 특정 object를 dir(object) 형태로 사용시 역참조 확인 가능한 항목들을 불러올 수 있다. class User(AbstractBaseUser): ... class UserProfile(models.Model): user = models.OneToOneField(to=User) hobby = models.ManyToManyField("Hobby", verbose_name="취미") ... class Hobby(models.Model): ... # views.py user = User.objects.get(id=obj_id) hobby = Hobby.objects.get(id=obj_id) print(dir(user)) print(.. 2022. 6. 19.
13. Django DRF 역참조 외래 키를 사용해 참조하는 object를 역으로 찾을 수 있다. 왜래 키 지정 시 related_name 옵션을 사용해 역참조 시 사용될 이름을 지정할 수 있다. releated_name을 지정하지 않는다면 기본적으로 tablename_set 형태로 지정된다. ex1) user_profile.hobby → 정참조 ex2) hobby.userprofile_set → hobby를 참조하고 있는 UserProfile 테이블의 object를 져옴 models.py에서 releated_name을 user_hobby 로 지정했다면 hobby.user_hobby와 같이 사용 단! OneToOneField는 예외이다. class UserProfile(models.Model): user = models.OneToOneF.. 2022. 6. 19.
12. Django DRF 외래 키 외래 키 종류 ForeignKey : many-to-one 형태로 특정 테이블에서 다른 테이블을 참조 할 수 있다, 영화관과 시청자의 관계를 나타 낼 때, 시청자 테이블에서 영화관 테이블을 Foreign Key를 사용해 관계를 맺을 수 있다. OneToOneField : one-to-one 형태로 ForeignKey와 동일하지만, 1:1 관계만 가능하다. 사용자 계정 테이블과 사용자 프로필 테이블이 별도로 존재 할 때, 계정 테이블을 프로필에서 1:1로 관계를 맺을 수 있다. ForeginKey(unique=True)로 설정해주는거랑 같다. ManyToManyField : many-to-many 형태로 한 개의 필드에서 여러개의 테이블을 참조 할 수 있다. 영화라는 테이블에서 카테고리 테이블의 objec.. 2022. 6. 19.
11. Django DRF 로그아웃 구현 from django.contrib.auth import logout class UserApiView(APIView): def delete(self, request): logout(request) return Response({'message':'로그아웃 성공!'}) 간단! 2022. 6. 19.
10. Django DRF 로그인 구현 from django.contrib.auth import login, authenticate from rest_framework import status class UserApiView(APIView): # 로그인 def post(self, request): username = request.data.get('username', '') password = request.data.get('password', '') user = authenticate(request, username=username, password=password) #user = authenticate(request, **request.data)로 해도 되나 뭐가 들어오는지 작성한 사람말고는 확인하기 어려움으로 위와 같이 쓰는걸 추천 if.. 2022. 6. 19.
9. Django DRF custom user 생성 일반 user model은 필드가 고정되어 있어 커스텀이 어렵다. custom user model 생성 시 필드들을 자유롭게 커스텀 가능하다. user model 만들기 # user/models.py from django.db import models from django.contrib.auth.models import BaseUserManager, AbstractBaseUser # Create your models here. class User(AbstractBaseUser): username = models.CharField("사용자 계정", max_length=50, unique=True) password = models.CharField("비밀번호", max_length=200) email = m.. 2022. 6. 19.
8. Django DRF rest api에 대한 이해 http method 종류 get : 조회 post : 생성 put : 수정 delete : 삭제 FBV vs CBV FBV : Function Base View CBV : Class Base View FBV def user(request): if request.method == 'post': pass if request.method == 'get': pass CBV from rest_framework.views import APIView from rest_framework import permissions from rest_framework.response import Response class UserView(APIView): #권한 설정 #모두 #추가 설정을 안하면 default값이다 permiss.. 2022. 6. 18.