본문 바로가기
개발_TIL

개발_TIL | 2022-06-10 (37)

by Hee94 2022. 6. 14.

▷ 장고 팀 프로젝트 시작 (3)

   <로그인 / 회원가입 페이지>

     - Django의 AbstractUser를 활용하여 모델을 설정하고 기존 Django 유저에 없던 nickname을 추가해주었다.

       (Django 기본 유저 모델을 AbstractUser로 지정)

from django.db import models
from django.contrib.auth.models import AbstractUser

class UserModel(AbstractUser):
    class Meta:
        db_table = "users"

    nickname = models.CharField(max_length=256, default='')

     - Views.py에 로그인과 회원가입 함수를 생성하였다.( 정보 빈칸에대한 error 와 비밀번호체크 구현)

def sign_up_view(request):
    if request.method == 'GET':
        return render(request, 'signup.html')
    elif request.method == 'POST':
        username = request.POST.get('username', '')
        nickname = request.POST.get('nickname', '')
        password = request.POST.get('password', '')
        password2 = request.POST.get('password2', '')

        if password != password2:
            return render(request, 'signup.html', {'error':'패스워드를 확인 해주세요.'})
        else:
            if username == '' or password == '':
                return render(request, 'signup.html', {'error': 'ID 와 비밀번호는 필수입니다.'})

            exist_user = get_user_model().objects.filter(username=username)
            if exist_user:
                return render(request, 'signup.html', {'error': '이미 있는 ID입니다.'})
            else:
                UserModel.objects.create_user(username=username, nickname=nickname, password=password)
                return redirect('/sign-in')

def sign_in_view(request):
    if request.method == 'POST':
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')

        me = auth.authenticate(request, username=username, password=password)
        if me is not None:
            auth.login(request, me)
            return redirect('wines:home')
        else:
            return render(request, 'signin.html', {'error':'ID 혹은 비밀번호를 확인 해주세요.'})

    elif request.method == 'GET':
        return render(request, 'signin.html')

      - urls.py (url 지정)

from django.urls import path
from . import views

app_name = 'users'

urlpatterns = [
    path('sign-up/', views.sign_up_view, name='sign-up'),
    path('sign-in/', views.sign_in_view, name='sign-in'),

'개발_TIL' 카테고리의 다른 글

개발_TIL | 2022-06-14 (39) // feat) KPT  (0) 2022.06.14
개발_TIL | 2022-06-13 (38)  (0) 2022.06.14
개발_TIL | 2022-06-09(36)  (0) 2022.06.09
개발_TIL | 2022-06-08(35)  (0) 2022.06.09
개발_TIL | 2022-06-07(34)  (0) 2022.06.08