vscode를 이용한 웹구축(html)

파이썬 장고 로그인,회원가입구현하기

LRWoo 2023. 4. 23. 16:23
728x90
반응형

 

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에서  로그인이 안되있으면 회원가입을띄워주는 반복문을 추가해보자

                                       

nav.html

#버튼에 common경로에 signup을 추가해주고

#부분 수정

 

common에 urls.py로가서 회원가입경로를추가해준다.

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를 생성해준다

common > forms.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 로가서 회원가입폼을 만들어보자

 폼작성시 기본으로 작성해야 하는 것들 

 

회원가입폼을 만들어주자

templates->common->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 태그를 사용하여 회원가입 버튼을 만들어준다.

 

 

 

이렇게 서버를 열어서 회원가입을 누르면 회원가입폼이 짠

웹이미지 회원가입

적당히 가입정보를 적어주고 가입하기를 눌러보자. 

 

 

회원가입완료

728x90
반응형