본문 바로가기
Python/Django

Django - 회원가입 기능과 CSRF 토큰

by 코드뭉치 2023. 4. 4.

signup의 html 수정

<!--signup.html-->

<form class="form-area" method="post" action="/sign-up/">
    {% csrf_token %}
    <div class="form-group mt-2 mb-2">... 
    </div>
    <div class="form-group mt-2 mb-2">... 
    </div>
</form>

{% csrf_token %}은 CSRF(Cross-site request forgery) 토큰을 생성한다.

이 토큰은 사용자가 요청을 보낼 때 마다 해당 토큰을 함께 제출하도록 요구함으로써 보안을 지켜주는 기능

 

method="post" 

> 회원가입 정보를 저장해야 하므로 post메소드 사용

 

action="/sign-up/"

> 어떤 url로 전달할 것인지

*뒤에 /를 붙이지 않으면 오류가 난다.


회원가입용 view 함수

# user/views.py
from django.shortcuts import render, redirect
from .models import UserModel # .models에서 UserModel을 가져옴

def sign_up_view(request):
    if request.method == 'GET': # request.method가 GET이면 페이지를 보여주기만 함
        return render(request, 'user/signup.html')
    elif request.method == 'POST': # 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: # password와 password2가 다르면 다시 회원가입 화면
        	return render(request, 'user/signup.html')
        else:					  # password가 같다면 유저정보를 저장함
        	new_user = UserModel()
            new_user.username = username
            new_user.password = password
            new_user.bio = bio
            new_user.save()  # 정보를 DB에 저장 
            
    	return redirect('sign-in') # 회원가입 완료 시 실행되며, 로그인 화면을 보여줌

요약

1. 메소드가 GET이면 페이지를 보여줌

2. 메소드가 POST면 username, password, password2, bio의 정보를 가져옴

3. password가 불일치하면 다시 회원가입 화면을 보여줌

4. password가 일치하면 유저의 정보를 DB에 저장

5. 회원가입 완료시 로그인 창을 redirect

'Python > Django' 카테고리의 다른 글

erd  (0) 2023.04.06
Django - 로그인 기능  (0) 2023.04.04
Django - 템플릿 상속과 URL연결, path() 함수  (0) 2023.04.04
Django - Models 만들기  (0) 2023.04.04
Django - Admin기능  (0) 2023.04.04

댓글