현재 진행 단계 : 초기 세팅 완료, users 앱 생성, models.py의 User 클래스 작성 완료하여 DB에 migrate까지 끝난 상황
✅ password 의 속성으로 max_length=200
을 준 이유
비밀번호가 추후에 암호화되면서 길어질 경우를 대비
✅ created_at
, updated_at
column 작성 이유
데이터 이력 관리를 위해. DateTimeField
는 날짜와 시간 생성해주는 메소드
created_at
: 처음 생성된 시점. auto_now_add = True
는 처음 생성된 시점 자동으로 기록
updated_at
: 업데이트 된 시점. auto_now = True
는 업데이트 되는 시점 자동으로 기록
✅ 변수명에 쓰는 =
는 가장 긴 변수명의 한 칸 뒤를 기준으로 쓰자
폰번호or이메일
, 성명
, 사용자이름(id)
, 비번
{"message": "KEY_ERROR"}, status code 400
반환@
와 .
반드시 포함, 없을 경우 에러 반환8자리 이상
& 문자+숫자+특수문자
포함, 아닐 경우 에러 반환 {"message": "SUCCESS"}, status code 201
반환 data = json.loads(request.body)
는 client로부터 받은 정보를 파이썬에서 사용할 수 있는 dictionary 형태로 바꾸어 주고 이를 data
라는 변수에 담았다data
는 객체이고 그 Key로 value를 불러서 각각 name
~ phone_number
에 담는다@
와 .
그리고 비번은 8자리 이상
& 문자+숫자+특수문자
를 포함해야 한다는 정규표현식re.match(패턴, 패턴을 찾을 문자열)
import re
email = "rlaalsgh@gmail.com"
email_regex = "^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"
print(re.match(email_regex, email))
# <re.Match object; span=(0, 18), match='rlaalsgh@gmail.com'>
import re
email = "rlaalsghgmail.com"
email_regex = "^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"
print(re.match(email_regex, email))
# None
JsonResponse({'MESSAGE':'INVALID_EMAIL'}, status=400)
를 반환하도록 설정자주 사용되는 Model Method인 filter()와 exists() 리마인드
- filter() : filter(**kwargs): 키워드 인자로 주어진 lookup 조건에 일치하는 레코드들의 QuerySet 반환
case1 In : Category.objects.filter(name='브루드커피') Out : [<Category: Category object (3)>, <Category: Category object (4)>] case2 In : Category.objects.filter(name='브루드커피').filter(id=3) Out : [<Category: Category object (3)>] case3 In : Category.objects.filter(name='브루드커피').exclude(id=3) Out : [<Category: Category object (4)>]
- exists() : filter()와 함께 서용해서 filter 조건에 맞는 데이터가 있는지 조회, 존재하면 True 존재하지 않으면 False를 반환 (QuerySet을 반환하지 않음)
In : Category.objects.filter(name='브루드커피').exists() Out : True
위 코드는 User객체에서 email key가 데이터로 받은 data['email']과 같은 것을 찾아서 True이면 return 값을 반환한다. 다시 말해서 아이디가 이미 존재한다면 에러 메세지를 반환하는 것
위 3가지 if문이 통과될 시 create() 메소드로 User 객체를 생성한다. 각각의 column에는 request.body로 온 데이터가 담기고 이게 DB users테이블에 추가가 되는 것 = 회원가입 ㅊㅋㅊㅋ그리고 회원가입 성공 메세지 반환
http -v POST localhost:8000/users🔴/signup🔵 email="thsrudgns@gmail.com" password="thsrudgns22@" name="손경훈" other_info="다른정보" phone_number="010-4545-4545"
🔴 여기 써있는 users는 타겟이라 불리고 이 타겟을 프로젝트 파일의 urls.py에서 먼저 인식을 하고 include('users.urls')를 통해 users 앱의 urls.py로 보낸다. 그럼 이 urls.py의 path에서 🔵signup을 인식하고 views.py에 작성해놓은 SignUpView 클래스로 보낸다. SignUpView.as_view() as_view()라는 소스코드를 뜯어보면 대문자를 소문자로 변환시켜주는 함수가 구현돼 있고 그걸 통해 http 요청에서 대문자로 들어온 POST를 소문자 post로 인식하고 SignUpView 클래스 안의 post 함수를 실행시키면서 위의 과정이 쭉 실행되는 것이다