PyCharm과 함께 DJango와 RestFramework를 활용하여 간단한 게시판 만들기(5)

예상보다 늦게 글을 올리게 되었습니다 ㅠㅠ 아직 구체적으로 정해지지 않았지만, 일단 오늘은 회원 가입하기란 주제로 글을 쓰고자 합니다. 이전에 구체적으로 다루지 않았던 Django 의 Form 활용 방법과 간단한 커스터마이징, 그리고 회원가입 까지의 플로우를 만들어 보고자 합니다.

– 회원 가입 만들기
1) 회원 가입 URL 만들기
2) 회원 가입 Form 만들기
3) 회원 가입 템플릿 만들고 Form 연결하기
4) 마치며…

그럼, 바로 시작해 볼까요?

1) 회원 가입 URL 만들기

가장 먼저, 저희가 만들 것은 URL 입니다. 지난 시간에 저희가 내용을 조금 정리했었죠? 오늘은 user_manager 앱만 수정하여 모든 내용을 만들어 낼 계획 입니다. 먼저, user_manager 앱에 있는 urls.py 파일을 볼까요?

url 추가 하기
마지막으로 정리했던 모습 입니다. 이곳에 ‘join’ 이라는 이름의 URL 하나와 join_page 라는 view 를 각각 추가해 봅시다.
urls.py 의 모습
urls.py 는 이렇게 수정했고,
views.py의 모습
views.py 에는 이렇게 함수를 하나 추가해 뒀습니다.

 

간단하게 URL을 추가 했으니, 함수를 기본 형태로 만들고 / 간략하게 테스트를 해 봅시다.

 

views.py 를 조금 수정한 모습
간단하게 HttpResponse 를 만들어, ‘회원가입’ 임을 명시하고,
서버를 구동하는 모습
서버를 구동 합니다.
페이지가 정상적으로 뜨는지 확인해 봅니다.
그리고 해당 URL 로 접속하여 잘 작동하는지 확인 해 봅시다.

 

2) 회원 가입 Form 만들기

이제 기본적인 URL을 만들었으니, 회원 가입을 위한 템플릿을 하나 만들어 봅시다. 평범하고 흔하게 쓰는 방식으로, 사용자 ID / Password 를 각각 입력 받는 회원 가입 템플릿을 만들어 보죠. 그 전에, 저희는 Django 에서 제공하는 From 클래스를 활용할 겁니다. 따라서 템플릿이 아닌 Form을 먼저 만들어 보도록 할까요?

LoginForm 클래스 정의
먼저, Login 때 만들었던 Form 부분을 참고하여 회원 가입 Form 클래스를 만들어 봅시다. Login 폼과 동일하게 먼저 만듭시다.
Form 필드에 Widget 사용하기
지난번에는 2가지 다 단순한 Input 필드 였는데, 이번에는 특정 필드에 속성을 줘 봅시다. Django 폼 클래스에 사용되는 필드는 ‘위젯’ 이라는 속성을 통해서 화면에 어떻게 출력될지를 결정 합니다. widget 속성 중, PasswordInput 위젯을 넣어 보도록 합시다.
Form 렌더링 모습
기존에 LoginForm 에도 같은 방법으로 위젯으로 적용하고 테스트 해본 모습입니다. 별다른 코드 수정 없이, 폼 클래스의 위젯 속성을 변경하는 것 만으로 폼 모양을 제어할수가 있다는 사실을 알게 되었네요!
Form 클래스를 확장한 모습
이제 widget 속성과 여러가지 제약 조건을 추가해 봅시다. 회원 가입시 ID는 최소 4자 이상, 12사 이하 / 비밀번호는 최소 6자 이상 / 12자 이하이며, 비밀번호 확인을 위한 password_check 필드도 추가해 봅시다.
Shell로 접근하기
그리고 Django Shell 로 들어가, 저희가 정의한 Form 이 정상 작동하는지 한번 확인해 보도록 하죠.
Form 객체 테스트
user_manager.forms 에 JoinForm이 있고, 이곳에 Dictionary 로 된 데이터를 넣어 봅니다. 그러면 폼 객체가 반환 되는데, is_valid() 함수로 저희가 적용한 제약 조건이 맞는지 확인할 수 있으며 / 어떠한 에러가 났는지도 볼 수 있습니다.

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

3) 회원 가입 템플릿 만들고 Form과 연결하기

이제 Form 클래스도 정의 했습니다. 간단하게 템플릿 하나를 만들고, 회원 가입 Form 과 연결해 보도록 합시다.

join_page.html 파일
login_form.html 파일을 참고하여, join_page.html 파일을 만듭니다.
urls.py 모습
URL 도 잘 연결해 주구요.
join_page 함수
login 뷰 를 참고하여 join_page 도 만들어 줍시다.
수정된 모습
그리고 join_page 를 다음 처럼 수정 합니다. 해당 urls 이 POST 로 불리면, Form 을 체크하고 / 아니면 빈 Form 을 넘겨서 화면에 출력하게 합니다. POST 로 불리어졌고, 정상적인 데이터(is_valid() 가 True면)라면, 회원 가입을 하고 /user/login/ 으로 이동 시켜 줍시다.
회원가입 확인하기
회원가입 페이지의 모습 입니다. 일부러 잘못된 데이터로 회원 가입을 시도하고, 관련된 에러가 잘 뜨는지 확인한 모습 입니다.
회원 가입 완료후 모습
정상적으로 데이터를 입력하고 회원 가입이 되고, login 으로 빠진 모습 입니다.

 

 

4) 마치며…

이번에는 Form 클래스에 대해서 조금 더 깊게 공부해 봤습니다. 지금까지 템플릿에 리소스가 전혀 없이 사용하고, 스타일링을 하지 않다 보니 밋밋하기도 하고…. Form 에서 나오는 에러가 영문이라거나 이것저것 문제들이 보이네요. 다음 시간에는 Form 클래스를 조금 더 커스텀 하여, Form 클래스와 스타일 적용하기와 예외 처리하기 에 대해서 알아보도록 하겠습니다.

[출처] https://devissue.wordpress.com/2015/04/08/pycharm%ea%b3%bc-%ed%95%a8%ea%bb%98-django%ec%99%80-restframework%eb%a5%bc-%ed%99%9c%ec%9a%a9%ed%95%98%ec%97%ac-%ea%b0%84%eb%8b%a8%ed%95%9c-%ea%b2%8c%ec%8b%9c%ed%8c%90-%eb%a7%8c%eb%93%a4%ea%b8%b05/

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED