django 5-2 회원가입/로그인 추가

Grace Goh·2022년 10월 13일
0

Django

목록 보기
25/32

username, pw 등은 None으로 들어갈 수 없기 때문에 None''(빈 칸)으로 바꿔준다.

user/views.py

    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')

templates/user/signup.html

{% if error %} # 에러가 있으면 보여주고 없으면 안 보여준다.
    <div class="alert alert-danger" role="alert">
        {{ error }}
    </div>
{% endif %} # 로 닫아준다.
<hr>

user/views.py

로그인 작업에도 에러메시지 삽입하기

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')

templates/user/signin.html

<hr>
{% if error %} # if 열기
    <div class="alert alert-danger" role="alert">
        {{ error }}
    </div>
{% endif %} # if 닫기
profile
Español, Inglés, Coreano y Python

0개의 댓글