[django] 점프 투 장고 - 장고 심화 6

Joy·2020년 6월 23일
0

Django | 점프투장고

목록 보기
15/22

계정생성

계정생성(회원가입) 기능을 구현하기
장고의 django.contrib.auth 앱을 이용

계정생성

common\login.html

계정생성 위한 링크 추가

    <div class="row">
        <div class="col-4">
            <h4>로그인</h4>
        </div>
        <div class="col-8 text-right">
            <span>또는 <a href="{% url 'common:signup' %}">계정을 만드세요.</a></span>
        </div>
    </div>

urls.py

{% url 'common:signup' %}이 추가했으니까 매핑 필요함

common/urls.py

from . import views
path('signup/', views.signup, name='signup'),

->> http://localhost:8000/pybo/common/signup/ 페이지가 요청되면 views.signup 함수가 실행. LoginView, LogoutView와 같은 뷰가 제공되지 않기 때문에 계정생성을 위한 뷰 함수를 직접 만들어야함

forms.py

계정생성시 사용할 UserForm 작성

forms.py

파일 추가 경로 : common/forms.py

from django import forms
from django.contrib.auth.forms import UserCreationForm


class UserForm(UserCreationForm):
    email = forms.EmailField(label="이메일")

jango.contrib.auth.forms 모듈의 UserCreationForm 클래스를 상속

  • UserCreationForm 의 속성
    속성명 설명
    username 사용자이름
    password1 비밀번호1
    password2 비밀번호2

email 속성을 추가

views.py

뷰에 signup 함수만들어 주기

common\views.py

POST요청인 경우에는 입력으로 전달받은 데이터를 이용하여 사용자를 생성
GET요청인 경우에는 common/signup.html 템플릿을 호출
authenticate와 login함수 : django.contrib.auth 패키지의 함수. 사용자 인증과 로그인

from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect
from common.forms import UserForm


def signup(request):
    """
    계정생성
    """
    if request.method == "POST":
        form = UserForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            raw_password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=raw_password)
            login(request, user)
            return redirect('index')
    else:
        form = UserForm()
    return render(request, 'common/signup.html', {'form': form})

signup.html

탬플릿 작성

common/signup.html

login 페이지랑 비슷하게.
"로그인" 페이지로 이동할 수 있는 링크를 추가
오류를 표시하기 위해 form_errors.html 템플릿 파일을 include
UserForm의 속성인 사용자이름, 비밀번호1, 비밀번호2, 이메일에 해당되는 필드들을 추가

테스트


profile
roundy

0개의 댓글