오늘 할 일
- 점프 투 파이썬 (5장 -1 클래스 파트)
- 스터디모집 프로젝트 회원가입 파트 수정 (회원가입시 에러 발생/ 아이디,닉네임,비밀번호 제어문 걸기)
☝🏻 점프 투 파이썬 (클래스)
class 와 object
인스턴스와 객체의 차이
- 오브젝트 : 인스턴스화를 통해 만든 모든 실체
- 인스턴스 : 코딩을 할 때(코딩하고 있는 현재 scope내에서) 동적 생성하고 변수로 레퍼런스를 챙긴 오브젝트를 가릴킬떄.
- 클래스 = 집의 설계도 / 오브젝트 = 설계도로 지은 모든집 / 인스턴스 = 주어진 집
오버라이딩
생성자
상속
self
method
☝🏻 회원가입시 에러 발생
object = UserManager() 이 부분을 -> objects = UserManager() 로 잘못 써서 오류 발생했음
에러 내용 : create_user() got an unexpected keyword argument 'name'
참고 ->https://stackoverflow.com/questions/24469392/create-superuser-got-an-unexpected-keyword-argument
☝🏻 아이디/비밀번호/닉네임 제어문 걸기
# 회원가입 core/views.py
def signup(request):
if request.method == 'POST': # post요청일 경우 if문 실행
res_data = {}
# print(request.POST)
username = request.POST['username']
nickname = request.POST['nickname']
name = request.POST['name']
password1 = request.POST['password1']
password2 = request.POST['password2']
if (username and nickname and name and password1 == password2):
if custom_util.chk_id(username) and custom_util.chk_nickname(nickname) and custom_util.chk_name(name) and custom_util.chk_password(password1):
user_check = User.objects.filter(username=username)
user_nickname_check = User.objects.filter(nickname=nickname)
if user_check: # 유저가 이미 가입되어있음
res_data['error'] = "중복된 아이디 입니다"
elif user_nickname_check:
res_data['error'] = "중복된 닉네임 입니다"
else:
user = User.objects.create_user(
username=username,
nickname=nickname,
name=name,
password=password1,
)
login(request, user)
return redirect(home)
elif not custom_util.chk_id(username):
res_data['error'] = "아이디는 4~20자의 영문 대문자,소문자, 특수문자 '_', 숫자 사용 가능합니다."
elif not custom_util.chk_password(password1):
res_data['error'] = "비밀번호를 확인하세요. 최소 1개 이상의 소문자, 숫자, 특수문자로 구성되어야 하며 길이는 7자리 이상이어야 합니다."
elif not custom_util.chk_name(name):
res_data['error'] = "이름은 한글과 영문 대 소문자를 사용하세요. (특수기호, 공백 사용 불가) 이름은 2~12자리"
else:
res_data['error'] = "아이디, 닉네임, 이름, 비밀번호 전부 입력 해주세요"
else:
res_data['error'] = "아이디, 닉네임, 이름, 비밀번호 전부 입력 해주세요"
return render(request, 'signup.html', res_data)
else:
return render(request, 'signup.html')
- 중복된 아이디 / 닉네임
여러개의 objects 를 하나의 필터로 검색하는 방법
user_check = User.objects.filter(username=username)
user_nickname_check = User.objects.filter(nickname=nickname)
if user_check: # 유저가 이미 가입되어있음
res_data['error'] = "중복된 아이디 입니다"
elif user_nickname_check:
res_data['error'] = "중복된 닉네임 입니다"
objects.filter() / objects.get()
Django의 ORM : get() 과 filter() 비교
같이 보면 좋을 거 같아서 출처 남기기 -> https://code4human.tistory.com/81
- 양식에 맞지 않는 아이디 / 닉네임 / 이름 / 비밀번호
elif not custom_util.chk_id(username):
res_data['error'] = "아이디는 4~20자의 영문 대문자,소문자, 특수문자 '_', 숫자 사용 가능합니다."
elif not custom_util.chk_password(password1):
res_data['error'] = "비밀번호를 확인하세요. 최소 1개 이상의 소문자, 숫자, 특수문자로 구성되어야 하며 길이는 7자리 이상이어야 합니다."
elif not custom_util.chk_name(name):
res_data['error'] = "이름은 한글과 영문 대 소문자를 사용하세요. (특수기호, 공백 사용 불가) 이름은 2~12자리"
else:
res_data['error'] = "아이디, 닉네임, 이름, 비밀번호 전부 입력 해주세요"
not으로 한 이유
return 값이 false 이여야 생성이 되니
custom_util.chk_id(username) 이 true가 되어야함
그래서 not custom_util.chk_id(username)
해야할 일
- startapp [room] 앱 생성 후 모델 설정
- 홈피드 검색바 기능 추가하기 / 글 쓰기 추가 / 글 올리면 글 목록에 보이게 하기
'FrameWork > Django' 카테고리의 다른 글
7월 14일(목) 검색바 추가(기능x)/글쓰기 추가(기능x)/메인페이지에 글목록 가져오기 (0) | 2022.07.14 |
---|---|
7월 13일(수) 포스팅 모델/admin/view (0) | 2022.07.14 |
프로젝트를 시작할 때 깃허브 잊지 않ㄱㅣ ~ (0) | 2022.07.11 |
Django (0) | 2022.07.08 |
[Django] 로그인 권한 지정 decorators @login_required (0) | 2022.06.29 |