본문 바로가기

Django/따라하는 장고

19. 회원가입

로그인 기능을 구현했으니 이제 회원가입 기능을 구현해보자.

projects\mysite\templates\navbar.html 파일을 다음과 같이 수정하자.

 

로그인/로그아웃 링크 바로 옆에 회원가입 링크를 추가했다. 회원가입은 로그아웃 상태에서만 보일수있게 했다. {% url 'common:signup' %} 태그를 적어넣었으므로 URL매핑규칙을 추가해줘야 한다. projects\mysite\common\urls.py 에 다음과 같이 추가하자.

회원가입 링크를 누르면 views.signup 함수가 실행된다. 이제 이 함수를 만들어 줘야하지만 그 전에 일단 계정생성시 사용할 UserForm을 projects\mysite\common\forms.py 파일을 추가해 새로작성하자.

UserForm 은 djnago.contrib.auth.forms 모듈의 UserCreationForm 클래스를 상속하여 만들었다. 그리고 email 속성을 추가했다. UserForm 을 따로 만들지 않고 UserCreationForm 을 그대로 사용해도 되지만 위처럼 이메일 등의 속성을 추가하기 위해서는 UserCreationForm 클래스를 상속해서 만들어야 한다. password2 는 password1 을 제대로 입력했는지 대조하기 위한 값이다. 

 

이제 아까 만들어야했던 views.signup 함수를 작성하자. projects\mysite\common\views.py 파일에 다음과 같이 작성하자.

signup 함수는 POST 요청인 경우에는 화면에서 입력한 데이터로 사용자를 생성하고 GET 요청인 경우에는 회원가입 화면을 보여준다. form.cleaned_data.get 함수는 폼의 입력값을 개별적으로 얻고 싶은 경우에 사용하는 함수로 여기서는 인증시 사용할 사용자명과 비밀번호를 얻기 위해 사용한다. 사용자를 생성한 후에 자동 로그인 될 수 있도록 authenticated, login 함수가 사용되었다. authenticated 와 login 함수는 django.contrib.auth 모듈의 함수로 사용자 인증과 로그인을 담당한다.

 

이제 회원가입 화면을 구성하는 common/signup.html 템플릿을 작성해야한다.

projects\mysite\templates\common\signup.html 파일을 추가하고 다음과 같이 작성하자.

form 태그 밑에는 오류를 표시하기위해 form_errors.html 템플릿을 include 했다.

 

이제 테스트를 해보자.

비밀번호와 비밀번호 확인이 다를 경우 오류가 발생한다. 일단 id 는 stdiohan 비밀번호는 testpasswd 로 설정했다. 그리고 

http://localhost:8000/admin/ 페이지를 요청해보면

이런 경고 메세지가 나온다. 어드민 페이지는 슈퍼유저로 접속해야한다. 저번에 만든 아이디 admin 비밀번호 1111 로 로그인해 보면

이런 화면이 나온다 여기서 사용자(들) 버튼을 누르면

아까 만든 계정을 확인할 수 있다.

'Django > 따라하는 장고' 카테고리의 다른 글

21. author 표시  (0) 2022.11.17
20. author 속성  (0) 2022.11.16
18. 로그인 기능  (0) 2022.11.09
17. 템플릿 필터 및 답변 개수 표시  (0) 2022.11.07
16. Paginator  (0) 2022.11.05