장고 프로젝트 중 회원정보 수정 파트를 만들었다. 전체적인 모양을잡고 필요한 기능을 넣는게 나름 재밌었다. 현재 비밀번호와 같은 비밀번호로 설정할 수 없는 부분과 다른사람이 사용중인 닉네임을 사용하지 못하게 하는 등 기능을 넣었다 코드리뷰를 하며 주석을 달고 til에 올릴 예정이다.
###user_update##
#user/views
@login_required
def update(request):
if request.method == 'GET':
return render(request, 'user/update.html')
elif request.method == 'POST':
user = request.user
bio = request.POST.get('bio')
email = request.POST.get('email')
username = request.POST.get('username')
nickname = request.POST.get('nickname')
exist_nickname = get_user_model().objects.filter(nickname=nickname)
#유저의 닉네임과 같다면 그대로 저장 필터에 걸린다면 리턴 = 유저닉네임과 입력닉네임이 같아도 저장,
if exist_nickname and user.nickname == nickname:
user.nickname = nickname
user.bio = bio
user.email = email
user.username = username
user.save()
return redirect('/', user.username)
elif exist_nickname and user.nickname != nickname:
return render(request, 'user/update.html', {'error': '이미 사용중인 nickname 입니다.'})
else:
user.nickname = nickname
user.bio = bio
user.email = email
user.username = username
user.save()
return redirect('/', user.username)
###비밀번호 변경###
#user/views
@login_required
# return render(request, 'user/update.html', {'error': '이미 사용중인 nickname 입니다.'})
def change_password(request):
if request.method == "POST":
user = request.user #요청한 사람이 user로 정해짐 로그인 되어있는 사람
origin_password = request.POST["origin_password"]
if check_password(origin_password, user.password):
new_password = request.POST["new_password"]
confirm_password = request.POST["confirm_password"]
if origin_password==confirm_password or new_password==origin_password:
return render(request, 'user/change_password.html', {'error': '사용하고 있는 비밀번호를 입력하셨습니다.'})
elif new_password == confirm_password:
user.set_password(new_password)
user.save()
auth.login(request, user, backend='django.contrib.auth.backends.ModelBackend')
return redirect('/')
else:
return render(request, 'user/change_password.html', {'error': '신규 비밀번호와 신규 비밀번호를 똑같이 입력해주세요.'})
else:
return render(request, 'user/change_password.html', {'error': '현재 비밀번호가 틀렸습니다.'})
else:
return render(request, 'user/change_password.html')
'TIL' 카테고리의 다른 글
TEAM_B3 코드리뷰 | 커밋, 코드 컨벤션 | 머신러닝 1주 | 계획 | (0) | 2022.10.07 |
---|---|
TEAM_B3 instagram PROJECT | 코드리뷰 준비 | project management 특강 | 자가진단, 피드백 후 계획 | (0) | 2022.10.06 |
Django 인스타 클론코딩 프로젝트 | 좋아요, 북마크 | 회원정보수정 | 이메일 인증 비밀번호 재설정 | (0) | 2022.10.05 |
9.26~10.2 WIL 소셜로그인 | 북마크 | 좋아요 기능 | JSON (0) | 2022.10.02 |
Instagram clone coding project | github error | signin error (0) | 2022.10.01 |