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 |
댓글