from django.urls import path
from django.contrib.auth import views as auth_views
app_name = 'common'
urlpatterns = [
#장고에서 지원하는 views 라이브러리를 활용(로그인, 로그아웃, 비밀번호 찾기 & 초기화 등)
path('login/',auth_views.LoginView.as_view(template_name = "common/login.html"), name = "login")
]
from . import views
urlpatterns[
#...
path('signup/', views.signup, name="signup"),
]
3. 회원가입 Form 형성
사용자 입력 형태를 받기 위해 common/forms.py를 생성한다
그 후 코드 작성
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class UserForm(UserCreationForm):
# username , password 1 , password 2를 기본적으로 입력 받는다.
# 추가적으로 email을 받을 것인데, 기본값은 아니기에 수동으로 잡아줘야함.
email = forms.EmailField(label="이메일")
class Meta:
model = User
fields = ("username", "password1", "password2", "email")
4. 회원가입 함수 생성
common/views.py에서 signup 함수 생성
from django.shortcuts import render, redirect
from common.forms import UserForm
from django.contrib.auth import authenticate, login
# Create your views here.
def signup(request):
if request.method == "POST":
form = UserForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get("username")
row_password = form.cleaned_data.get("password1")
# 사용자 인증 담당 : 아이디와 비밀번호가 DB랑 같은지 비교
user = authenticate(username=username , password=row_password)
# 로그인 담당 : 사용자에게 입력받은 request와 인증기록인 user를 통해 로그인 허용 또는 거부
login(request, user)
return redirect("index")
else: # Get 요청일 떄
form = UserForm()
return render(request, "common/signup.html", {"form": form})