username, pw 등은 None으로 들어갈 수 없기 때문에 None
을 ''
(빈 칸)으로 바꿔준다.
if request.method == 'GET':
user = request.user.is_authenticated
if user:
return redirect('/')
else:
return render(request, 'user/signup.html')
elif request.method == 'POST':
username = request.POST.get('username', '') # 이 부분을 변경
password = request.POST.get('password', '')
password2 = request.POST.get('password2', '')
bio = request.POST.get('bio', '')
if password != password2:
# pw가 같지 않다고 알람; {화면에 데이터 직접 전달하기 ex. tweetlist, userlist..}
return render(request, 'user/signup.html', {'error':'패스워드를 확인해주세요.'})
둘 중 하나라도 작성 안 되어 있으면 if문,
아니면 그 이하로 내려간다.
else: # pw가 일치하면 하는 부분.
if username == '' or password == '':
return render(request, 'user/signup.html', {'error': '사용자 이름과 비밀번호는 필수항목입니다.'})
# 사용자 이름이 이미 있으면
exist_user = get_user_model().objects.filter(username=username)
if exist_user:
return render(request, 'user/signup.html', {'error': '사용자가 존재합니다.'})
else:
UserModel.objects.create_user(username=username, password=password, bio=bio)
return redirect('/sign-in')
{% if error %} # 에러가 있으면 보여주고 없으면 안 보여준다.
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endif %} # 로 닫아준다.
<hr>
로그인 작업에도 에러메시지 삽입하기
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username', '')
password = request.POST.get('password', '')
me = auth.authenticate(request, username=username, password=password)
if me is not None:
auth.login(request, me)
return redirect('/')
else:
return render(request, 'user/signin.html', {'error':'이름 혹은 패스워드를 확인해주세요.'})
# return redirect('/login')
<hr>
{% if error %} # if 열기
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endif %} # if 닫기