본문 바로가기

전체 글192

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.
CSRF ERROR 수정 POST / PUT / DELETE 통신 시 csrf error가 발생 할 때 Tests에 코드 추가 var xsrfCookie = postman.getResponseCookie("csrftoken"); postman.setGlobalVariable('csrftoken', xsrfCookie.value); Headers에 Key / Value 추가 Key : X-CSRFToken Value : {{csrftoken}} 원래는 cookie에 있는 csrftoken value를 가져와서 value에 넣어주는게 정석이다. 2022. 6. 19.
Postman 실행 1. WorkSpace 프로젝트마다의 독립된 공간으로 팀원들간 공유가 가능하다. New Workspace를 통해 만들 수 있다. 2. Collections 세부 카테고리를 정하는 곳 add request를 통해 'GET 사용자 조회' 와 같은 api를 생성할 수 있다. GET에 해당 url을 작성하면서 테스트를 할 수 있다.(물론 다른걸로 바꿔가면서 테스트 가능하다.) 3. 데이터 보내기 body > raw > JSON 이런식으로 데이터를 보낼 수 있다. 2022. 6. 18.