Server/Django project 1 - shopping mall

6. Django 회원가입 view 구성

개발자킹콩 2020. 9. 18. 21:24

bootstrap을 이용하여 기본적인 UI를 구현하여

django의 흐름을 더욱 이해하도록 회원가입을 만들려고 한다.

 

getbootstrap.com/docs/4.3/getting-started/introduction

 

Introduction

Get started with Bootstrap, the world’s most popular framework for building responsive, mobile-first sites, with BootstrapCDN and a template starter page.

getbootstrap.com

해당 bootstrap에서 css, js에 해당하는 부분을 복사하여 head부분에 붙여넣기 해준다.

이렇게 되면 bootstrap을 사용할 수 있는 구조는 완성이 되었다.

 

 

간단하게 templates와 views에 대해 살펴보면

views는 동작을 하는 것이고 templates는 화면을 보여주는 것이다.

즉, views가 동작하는 것을 templates에 보여주어야 하고 이들은 연결되어 있어야 한다.

 

shopuser의 views.py

 

이 함수를 나중에 url에 연결하면 요청 정보가 request를 통해서 들어온다.
request와 내가 반환하고 싶은 html파일을 반환하면 된다.

 

urls.py

 

이렇게 url까지 연결한다면

$ python manage.py runserver 

(--> 다음에 접근 시 127.0.0.1:8000)

다음의 url로 접근하면 views.py의 index라는 이름의 함수가 호출되고,

index함수가 실행된 뒤 index.html로 render를 return한다.

그렇게 되어 해당 templates가 보여지는 것이다.

 

 

 

 

 

이제 실제 view를 구현해보자!!

1. forms.py

우리는 form view를 만들어야 하는데 이는 빈칸으로 입력받는 창을 의미한다.

shopuser app에 forms.py를 생성한다.

 

forms.py

form에서 입력을 안했을때 오류메세지를 띄우기, 최대길이, label을 설정하고

비밀번호의 경우 보안이 중요하기에 widget을 ( ●● <-- 이렇게 )

비밀번호의 입력으로 표시하도록 하는 PasswordInput을 사용한다.

 

 

 

2. views.py 를 만들어 보자

우선 FormView를 가져온다. 이건 우리가 만든게 아니라 장고에서 제공하는 것이다.

회원가입 뷰를 만들때 FormView를 이용하기 때문에 상속을 받는다.

이렇게 되면 매우 편하게 사용할 수 있다.

그럼이제 우리가 만든 형식을 FormView로 만들어야 하기에 views.py에서 이를 연결하는 작업이 필요하다.

 

views.py

해당 가리키고 있는 template_name는 register.html이고 (적용할 템플릿),

form_class는 우리가 만든 form을 쓰는데 다른 operation들과 구조는

기존의 장고에서 만들어져 있는 FormView구조를 따른다는 뜻이다.

 

 

 

3. 이제 urls.py를 설정해주면 된다.

메인 urls.py이다.

register/ 하위의 url들을 RegisterView에서 받아서 사용하게 된다.

그리고 실행하면 template은 정상적으로 연결됐음을 알 수 있다.

class의 경우 함수처럼 바로 기재하지 않고, as_view() 함수를 사용하여 기재한다.

 

 

 

4. 이제 register.html을 수정만 하면 되는 것이다.

 

그럼 이제 bootstrap 을 적용하고 각각 해당하는 form에 적용만 하면 된다.

Document 의 form 을 적요해 보았다.

 

 

 

회원가입 창

 

 

5. 추가 보강

 

함수와 클래스로  views.py를 작성했을 때를 비교하면 

GET에서 화면 부려주고 POST에서 값을 입력받고 검증하고 저장하고

성공했을 때 특정페이지로 이동하는 것을 클래스기반으로 하니 짠게 없다...

완전 짧아짐!!! 아래의 코드는 함수 기반으로 회원가입을 작성했을 때이다.

 

 

그리고 정상적으로 form이 값이 들어와서 저장이 되어 성공되었을 때 

success_url = '/home' 이런식으로 다른 url로 이동도 가능하다

 

shopuser / views.py

 

 

 

이제 기본적인 구조는 완성 되었다.

근데 validation과 error message와 같은 작업을 수행하지 않으므로,

forms.py 의 기능을 추가하도록 하겠다.

 

shopuser / forms.py

이제 else 문을 만들어서 값이 동일하다면 회원가입을 진행하는 코드를 작성한다.

 

 이렇게 회원가입을 하는 코드를 작성하였다.

 

 

 

 

6. 정상 작동 확인

회원가입 창

회원가입 창에서 회원가입을 누른다.

 

 

회원가입하여 "/"에 해당하는 url로 이동

success_url = '/'

해당 코드에 의해 정상 작동 시 해당 url로 이동하였다.

 

 

127.0.0.1:8000/admin 

관리자 페이지에서 해당 유저가 정상적으로 가입이 완료 되었는지 확인한다.

 

 

 

 

 

이상!!! 오늘도 감코!!!!!