16. 회원가입 - eungyukm/DjangoBase GitHub Wiki

회원가입

  1. user_app에 urls.py 수정
from django.urls import path
from . import views


urlpatterns = [
    path('join', views.join, name='join'),
    path('login', views.login, name='login'),
    path('modify_user', views.modify_user, name='modify_user'),
    path('join_result', views.join_result, name='join_result'),
]
  1. 아래와 같이 join.html에 Action 변경
/user/join_result
  1. csrf 토큰 사용
# user/join_result
# post 요청시에는 csrf 토큰을 사용하게 된다.
# 이럴 경우 함수에 csrf_exempt라는 데코레이트를 설정해야 합니다.
@csrf_exempt
def join_result(request) :
    print(request.POST['user_name']) 
    print(request.POST['user_id'])
    print(request.POST['user_pw'] )
  1. 회원 가입처리를 하는 views.py
from django.shortcuts import render
from django.http import HttpRequest, HttpResponse
from django.template import loader
from django.views.decorators.csrf import csrf_exempt
import user_app.models

# user/join
def join(request) :
    template = loader.get_template('join.html')
    return HttpResponse(template.render())

# user/login
def login(request) :
    template = loader.get_template('login.html')
    return HttpResponse(template.render())

# user/modify_user
def modify_user(request) :
    template = loader.get_template('modify_user.html')
    return HttpResponse(template.render()) 

# user/join_result
# post 요청시에는 csrf 토큰을 사용하게 된다.
# 이럴 경우 함수에 csrf_exempt라는 데코레이트를 설정해야 합니다.
@csrf_exempt
def join_result(request) :
    # print(request.POST['user_name']) 
    # print(request.POST['user_id'])
    # print(request.POST['user_pw'] )

    # 파라미터 데이터를 추출합니다.
    user_name = request.POST['user_name']
    user_id = request.POST['user_id']
    user_pw = request.POST['user_pw'] 

    # 데이터 저장 처리
    user_model = user_app.models.UserTable()
    user_model.user_name = user_name
    user_model.user_id = user_id
    user_model.user_pw = user_pw
    user_model.save() 

    confirm = '''
                <script>
                    alert('가입이 완료되었습니다')
                    location.href = '/user/login'
                </script>
            ''' 

    return HttpResponse(confirm)
⚠️ **GitHub.com Fallback** ⚠️