본문 바로가기
Django

[Django] 장고 회원가입 기능 만들기

by kming 2023. 5. 25.

회원가입 페이지 보여주기 = GET 방식

회원가입하기 = POST 방식


회원가입 기능 만들기

1. 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 ""

2. html에 form태그 설정

<form class="form-area" method="post" action="/sign-up/">
    # Django에서 post 할 때에 보안을 위해서 무조건 사용
    {% csrf_token %}
    <div class="form-group mt-2 mb-2">
        <label for="username">이름</label>
        # id, name 중요
        <input type="text" class="form-control" id="username" name="username">
    </div>
    
    # form태그의 method로 action에 데이터를 보내주는 역할
    <button type="submit" class="btn btn-primary">회원가입</button>
    
</form>

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

 : html의 input에 입력 했던 것들은 각각 username, password 등 으로 sign_up_view()함수로 들어감

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)

        if password != password2:
            return render(request, 'user/signup.html')
        else:
            new_user = UserModel()
            new_user.username = username
            new_user.password = password
            # 저장
            new_user.save()
        # redirect 함수를 이용해서, 저장완료되면 이동할 페이지의 url을 ('')안에 작성
        return redirect('/sign-in')

Django에서 제공하는 사용자모델로 회원가입 기능을 수정

(더 간단하게 코드 수정)

 

1. user/views.py

수정 전

else:
    new_user = UserModel()
    new_user.username = username
    new_user.password = password
    # 저장
    new_user.save()
# redirect 함수를 이용해서, 저장완료되면 이동할 페이지의 url을 ('')안에 작성
return redirect('/sign-in')

수정 후

else:
    UserModel.objects.create_user(username=username, password=password)
    return redirect('/sign-in')