용기러기's Coding World

Yongki's Do it Django(1) - 회원가입 기능 만들기 본문

용기러기's Django

Yongki's Do it Django(1) - 회원가입 기능 만들기

yongkis 2020. 4. 12. 22:04

안녕하세요 비전공생으로 웹 개발자 취업에 도전 중인 Yongkis 입니다 :) 

 

오늘은 Django 프레임 워크가 제공하는 User Model을 이용해서 회원가입 기능을 구현해보고자 합니다.

회원가입은 저희가 쓰는 대부분의 웹 사이트에서 쓰는 필수적인 기능으로서 이 정도는 구현할 줄 알아야 하겠죠? :) 

 

사실, 이걸 하나하나 소스코드로 작성했다면 좀 머리아팠을테지만, Django가 저희가 자주 쓰는 회원가입 기능을 제공해준다는 점!

 

그럼 이제 본격적으로 그 과정을 살펴보겠습니다.

모든 과정을 시작하기 전에, 프롬프트에

 

python manage.py makemigrations(window *mac os는 python3라고 한 뒤에 해야 합니다)

python manage.py migrate(window *mac os는 python3라고 한 뒤에 해야 합니다)

를 해줍니다. 그러면, django가 auth_user라는 테이블을 저희 DB에 실제로 생성을 합니다.

그럼 저희는 django가 만든 테이블에 값을 입력만 하면 되겠죠?? 

 

그럼 이제 Django가 제공하는 User 모델을  views.py 에 불러오겠습니다. 

views.py  상단

이런 식으로 User Model을 불러온 뒤에 사용해줍니다 (views.py에 불러왔습니다) 

그럼 이제 저희는 models.py에 모델을 생성해서 사용하듯이 이미 django가 만들어놓은 User모델을 사용할 수 있게 되었습니다.

 

이러한 User model은 기본 field로 username, password, first_name, last_name, email을 가지고 있습니다. 

그래서 저는 이 모든 것을 사용해서 User의 객체를 만들어보고자 합니다!

register.html 구현 모습

오늘의 주제는 회원가입의 '기능'을 구현하는 것이기에.. 겉치장은 신경 쓰지 않겠습니다 :) 

이렇게 대충 register.html을 만들어주고,

views.py 에 index 함수 정의 부분 

저는 def index에서 다른 처리도 받을 것이기에(후에) """method=="POST" """로 왔을 경우를 따로 지정해서 받도록 하겠습니다. 

그럼 register.html에서 받아온 input value들을 각각의 변수에 할당해주겠습니다. 

그다음에 위에서 불러왔던 User 모델을 사용해 

User.objects.create_user(username=" ", password=" ", first_name=" ", last_name=" ", email=" ") 의 형태로 만들어보겠습니다 :)

이 과정은 사실 저희가 models.py에 구현해놓은 모델을 views.py에서 가져와 쓸 때 항상 하던 과정입니다:)

단지, 전에는

new_object = models.exampleModel(argument1=" ",  argument2=" ", ....)

new_object.save()

이런 식으로 해줬다면 

지금은 create_user 를 이용한다는 점이 차이점이 되겠습니다 :) 

그럼 이 상태로 submit 해보겠습니다 :) 

그럼 이제 계정이 제대로 생성되었는지 확인해보겠습니다. 

확인은 이미 생성이 되어있는 admin페이지에서 확인해도 되겠습니다만 저는 dbshell 명령어를 통해서 살펴보겠습니다.

살펴본 결과 auth_user라는 테이블에 순서대로 

 

1) id = 1

2) 바로 다음 부분인 알 수 없는(?) 영어와 숫자 및 특수문자의 조합은 비밀번호를 django의 알고리즘으로 암호화한 것입니다.

운영자가 사용자의 비밀번호를 알 수 있다면(그러면 안 되겠지만) 악용할 여지가 있겠죠?

그러한 부분에 대해서 django가 알아서 처리를 해준 것입니다.

3) 다음 부분은 마지막으로 로그인한 시간을 말해줍니다 

4) 그 바로 다음 부분은 모든 권한(Permission)을 가진 superuser의 지위의 여부입니다(1=True/0=False).

이 유저는 superuser가 아니기 때문에 0으로 되어있습니다.

5) 그다음은 아이디(username) 부분이고요. 

6) 그다음은 first_name입니다.

7) 이메일 부분이고요

8) 이 부분은 admin 페이지에 로그인을 허락할지 여부에 대한 부분입니다(1=True/0=False).

9) 이 부분은 우리가 아는 '휴면계정' 여부를 지정해주는 것입니다(1=Active[활동 유저]/0=InActive[휴면 유저])

10) 계정의 생성 시각을 의미합니다

11) last_name 부분입니다. 

 

자 여기까지 간단하게 django가 제공하는 User Model을 이용해서

회원가입 기능을 구현해봤습니다 :)

다음 챕터에서는 이러한 회원가입을 통해서 생성한 유저 아이디로

로그인 기능을 구현해보겠습니다 :)

감사합니다!