본문 바로가기
Language&Framework/Django

Django | 개념 정리_2주차_5. 사용자 관리와 로그인 - 회원가입

by JUNG씨 2022. 9. 27.

사용자 관리와 로그인 - 회원가입 기능 만들기 

 

 

1. user model을 사용한 회원가입 절차 만들기

➡️ 회원가입 페이지를 보여주는 url : 'sign-up'/ 'GET' 방식 (값을 읽어옴)

➡️ 가입정보를 입력하고 전송 하는 url은 동일하게 'sign-up'/ 'POST'방식 (값을 주거나 수정,삭제 요청)

 

2. user의 views.py sign_up_view에 POST 추가하기

# user/views.py
def sign_up_view(request):
    if request.method == 'GET': # GET 메서드로 요청이 들어 올 경우
        return render(request, 'user/signup.html')
    elif request.method == 'POST': # POST 메서드로 요청이 들어 올 경우
        
		return ""

3. HTML에서 form태그 설정

➡️ signup.html의 <form>태그 의 속성에 method와 action을 추가

<!-- 윗 부분 생략 -->
<div class="wrap">
    <h2 class="title-center"> 회원가입 </h2>
    <form class="form-area" method="post" action="/sign-up/">
        {% csrf_token %}
        <div class="form-group mt-2 mb-2">
            <label for="username">이름</label>
            <input type="text" class="form-control" id="username" name="username">
        </div>
        <div class="form-group mt-2 mb-2">
<!-- 아랫 부분 생략 -->

➡️ <button type="submit" class="btn btn-primary">회원가입</button>버튼 : form태그의 method로 action에 데이터를 보내주는 역할을 한다.

➡️ {% csrf_token %} : POST 할 때 보안을 위해 사용!

 

4. user의 views.py에서 전송되는 데이터 받아서 저장하기 

➡️ username, password, password2, bio => sign_up_view()함수

➡️ html에서 넘겨준 데이터를 views.py에서 받아준다.

➡️ password와 password2가 일치하는지 확인 해 주고, 일치하면 저장.

from django.shortcuts import render, redirect
from .models import UserModel

def sign_up_view(request):
    if request.method == 'GET':
        return render(request, 'user/signup.html')
    elif request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)
        password2 = request.POST.get('password2', None)
        bio = request.POST.get('bio', None)

        if password != password2:
            return render(request, 'user/signup.html')
        else:
            new_user = UserModel()
            new_user.username = username
            new_user.password = password
            new_user.bio = bio
            new_user.save()
        return redirect('/sign-in')

➡️ redirect 함수 => 저장 완료 되었다면 로그인 페이지  /sign-in url로 이동.