1. 구성
1. join.html - 회원가입 HTML
웹상에서는 다음과 같이 보여진다
2. success.html - 회원가입 성공시 이동할 html
2. 설정
1. Model 설정
1) WebUser 객체 생성
- models.py 안에 models.Model을 상속받는 클래스를 생성한다
- 레코드들을 구분하는 ID는 'id'라는 필드명으로 자동 생성된다
- 해당클래스 안에 테이블에 대응하는 필드들을 추가한다
2) migrations 파일 만들기
- python manage.py makemigrations "앱이름"
3) migrate 명령어로 데이터베이스 최신화 하기
- python manage.py migrate
2. urls.py 설정
- 사용자가 url을 요청할시 실행할 메소드들을 지정한다
1) /join/ 에 해당하는 url을 요청할시 views.join 메소드를 호출하도록 한다
2) /dojoin/ 에 해당하는 url을 요청할시 views.dojoin 메소드를 호출하도록 한다
3. viesw.py 설정
- 사용자가 특정 url을 요청할시에 호출될 메소드들을 정의한다
1) join메소드를 호출할 시 introduce/join.html 을 반환하도록 한다
2) dojoin메소드를 호출할 시 데이터베이스에 새로운 유저를 추가한 뒤
introduce/success.html을 반환하도록 한다
A) FORM값 참조
- 사용자가 form을 통해 보내는 데이터는 request객체의 POST 리스트안에 담겨있다
- form 태그 안의 input 태그들의 name(변수명)으로 POST리스트안의 값을 가져올 수 있다
B) DB에 저장
- 위에서 생성한 모델클래스의 객체를 생성하며 매개변수로 DB의 필드값을 지정하여 넘겨줄 수 있다
- WebUser(user_id=id, user_pw=pw) 과 같이 직접 필드를 지정하지 않는다면 모델객체의 필드 순서대로
자동으로 대입된다 때문에 WebUser(id,pw)과 같이 객체 생성을 하고싶다면 앞에 레코드를 구분하는
id값도 넣어주어 다음과 같이 생성해야 한다 => web_user = WebUser(1,id,pw)
- 생성된 객체.save() 메소드를 호출하여 데이터베이스에 새로운 레코드를 추가할 수 있다.
3. 확인
1. Django 서버 실행
- python manage.py runserver
2. join 페이지 접속후 회원가입 요청을 한다
- http://127.0.0.1:8000/introduce/join
3. CSRF 토큰을 찾을 수 없다고 한다
- 사용자의 토큰을 통해 CSRF 웹 보안 공격을 막기위해 장고에서 제공하는 기능이다
CSRF - http://galid1.tistory.com/286
- 간단히 말해 사용자의 요청을 위조하는 것을 말한다 이를 사용자의 토큰을 통해서 막을 수 있다
4. CSRF토큰 입력
- form 태그 안쪽에 다음의 코드를 추가한다 {% csrf_token %}
5. 확인
1. CSRF 토큰 에러는 뜨지 않지만 페이지가 이동되지 않는다
=> 요청한 url을 자세히 보면 join의 하위의 dojoin이 호출된것을 볼 수 있다.
6. Form 요청 url 설정
1. 사용자가 요청하게될 url을 지정하는 form태그 안의 action을 /introduce/dojoin 으로 변경한다
2. 다시 확인하면 url의 마지막에 '/' 가 붙지 않았다고 나타난다
3. 요청할 url의 마지막에 '/'을 붙힌다
4. 성공적으로 요청되었다
7. Admin 페이지를 통해 데이터베이스 값 확인하기
1. superuser 생성
- python manage.py createsuperuser
1) id 입력
2) 암호 입력
3) 암호 재입력
4) 이메일 입력
2. Admin 페이지에 생성한 모델 추가하기
1) admin.py에 models.py의 모든 내용을 import한다
- from .models import *
2) admin site에 WebUser 모델을 등록한다
- admin.site.register(WebUser)
3. http://url/admin 페이지로 이동하여 확인
1) Web users 라는 Table이 생긴것을 볼 수 있다
2) WebUser object가 새로 생긴것을 볼 수 있다.
'FrameWork > Django' 카테고리의 다른 글
Django - Redirect(리다이렉트) 하기 (2) | 2018.12.16 |
---|---|
Django - Static 파일(css, js, img) 사용법 (0) | 2018.12.16 |
Django - Template(템플릿) 사용 (0) | 2018.12.08 |
Django - 장고 어드민 사이트 이용하기 (0) | 2018.12.08 |
Django - 장고 앱 생성, 뷰 생성, 모델 생성 (0) | 2018.12.07 |