파이썬 장고 로그인,회원가입구현하기
admin 계정으로 로그인을 해보면
이렇게 accounts profile을 찾을 수 없다는 에러가 뜬다
config -settings.py로가서 맨 아래에 로그인 url을 추가해준다.
config폴더에 url.py로가자
위 코드는 Django 앱의 URL 패턴을 정의한다.
`path` 함수를 사용하여 4개의 패턴을 정의하였고
1. `admin/`: 이 패턴은 Django의 기본 제공 admin 사이트에 연결한다.
2. `board/`: 이 패턴은 `board` 앱에서 정의된 URL 패턴들을 사용하고 `include` 함수를 사용하여 `board.urls` 모듈을 포함
3. `common/`: 이 패턴은 `common` 앱에서 정의된 URL 패턴들을 사용한다.
`include` 함수를 사용하여 `common.urls` 모듈을 포함한다.
4. `''`: 이 패턴은 `views.index` 함수를 사용하여 웹사이트의 메인 페이지를 보여준다. 이 패턴의 이름은 `index`
이렇게 board를 import시켜서 경로를 추가해준다.
board에 있는 views 쪽 index로 넘긴다.
그럼 로그인을 했을때 주소창에 BOARD를 입력하지않아도
이렇게 게시판이 바로 뜬다.
nav.html파일을 수정해서
로그인이 인증이되면 로그아웃을 띄우고 그렇지않으면 로그인을 뜨는 a태그로 추가시켜준다
common폴더에 url.py로 가서 urlpatterns에 path로 common:logout경로를 추가시켜주자
common에 urls.py의 각각 로그인과 로그아웃에 대한경로
nav.html로가서 로그인 인증이 되면
유저네임을 띄울 수 있게 코드를 추가시켜준다
게시글 들어가서 로그인을 하면 바로 게시판 화면으로 넘긴다.
또, 로그아웃을 누르면 게시판으로 넘어갈 수 있게 settings.py로가서 logout을 추가시켜준다
관리자계정으로 로그인,로그아웃시 게시판으로 돌아오는것을 가지고 놀아봤다.
이제는 익명으로 게시판을 이용해보자
nav.html에서 로그인이 안되있으면 회원가입을띄워주는 반복문을 추가해보자
#버튼에 common경로에 signup을 추가해주고
common에 urls.py로가서 회원가입경로를추가해준다.
위 코드는 Django 앱의 `common`에 대한 URL 패턴을 정의해준다.
설명 =
1. `login/`: 이 패턴은 `auth_views.LoginView`를 사용하여 로그인 화면을 보여주는 뷰로 연결되어있다.
.`template_name` 매개변수를 사용하여 `common/login.html` 템플릿을 렌더링하고 이 패턴의 이름은 `login`
2. `logout/`: 이 패턴은 `auth_views.LogoutView`를 사용하여 로그아웃 처리를 하는 뷰로 연결되어있다.
이 패턴의 이름은 `logout`
3. `signup/`: 이 패턴은 `views.signup` 함수를 사용하여 회원가입 화면을 보여주는 뷰로 연결되어있다.
이 패턴의 이름은 `signup`
`app_name` 변수는 URL 패턴의 네임스페이스(namespace)를 지정한다.
common에 form.py를 생성해준다
위 코드는 Django의 `UserCreationForm`을 상속받아 사용자 회원가입 폼을 커스터마이징한 것
`UserForm` 클래스는 `UserCreationForm`의 기능에 `email` 필드를 추가하였습니다. `email` 필드는 `forms.EmailField`를 사용하여 정의되었다.
`Meta` 클래스를 사용하여 폼에서 사용할 모델 클래스를 `User`로 지정하고, 폼에서 사용할 필드를 `fields` 변수에 지정하여 `username`, `password`, `password2`, `email` 필드를 사용하도록 한다 . `password2`는 `UserCreationForm`에서 이미 정의된 필드로, 비밀번호 확인용 필드이다.
이렇게 커스터마이징된 폼을 사용하여 사용자가 회원가입을 할 때, `username`, `password`, `password2`, `email` 필드를 입력하도록 하며, 입력한 데이터는 `User` 모델에 저장된다.
common에 views.py로 가자
이코드는 `signup` 뷰 함수를 정의한 것
(주의)
저기 method == ""post (띄어쓰기)" 이렇게 하면 코드가 동작하지않는다
요청이 post메서드를 못읽어온다 실수하지않게 주의하자
이제 signup.html 로가서 회원가입폼을 만들어보자
폼작성시 기본으로 작성해야 하는 것들
회원가입폼을 만들어주자
위 코드는 `common/signup.html` 템플릿 파일이다
{% extends "base.html" %}`는 `base.html` 템플릿을 상속하겠다는 것을 의미한다.
즉, `base.html` 템플릿에 있는 블록들을 상속받아서 이 템플릿에서 사용할 수 있다.
{% block content %}`와 `{% endblock %}` 사이에는 이 템플릿에서 사용할 콘텐츠를 작성
<form>` 태그를 사용하여 회원가입 폼을 구성한다.
`method` 속성으로 `POST` 방식을 사용하고, `action` 속성으로 `common:signup` URL을 지정시킨다.
{% csrf_token %}`은 Django에서 제공하는 CSRF 공격 방지 기능을 활성화시키기 위한 태그이다
(장고관리자 필수태그)
{% include "form_errors.html" %}`은 폼 검증 에러 메시지를 보여주기 위한 템플릿을 삽입하는 태그
이를 통해 폼 검증 에러가 있으면, `form_errors.html` 템플릿 파일에 있는 메시지들을 렌더링하여 보여준다.
각 아까 아이디,비밀번호,비밀번호확인,이메일의 각 입력 필드들은 `<label>` 태그와 `<input>` 태그를 사용하여 구성한다. <input>` 태그의 `value` 속성= 해당 필드의 초기값을 설정한다.
마지막으로, button 태그를 사용하여 회원가입 버튼을 만들어준다.
이렇게 서버를 열어서 회원가입을 누르면 회원가입폼이 짠
적당히 가입정보를 적어주고 가입하기를 눌러보자.
회원가입완료