django : 회원가입과 로그인 구현

Psj·2020년 11월 10일
0

@이것은 장고와 MySQL이 가상환경에 전부 설치되었다고 가정하고 시작한다.@

프로젝트 파일 생성

$ django-admin startproject 프로젝트이름

예) $ django-admin startproject project_westagram

project_westagram 폴더가 만들어지고
안에 들어가면 똑같은 이름의 project_westagam 폴더와 manage.py가 있는것을 확인할수있다.


(보기쉽게 GUI화면 캡쳐본, 보통 터미널로 확인한다.)

특정 기능을 가진 앱 생성

터미널에서 위와같이 manage.py가 존재하는 경로에 들어가서

$ python manage.py startapp 앱이름

예)$ python manage.py startapp account
만들고자하는 앱을 만든다.
그러면 manage.py가 존재하던 경로에 account라는 이름의 폴더가 생성되는것을 확인할 수 있다.

(위에 보이는 board도 앱이다. 지금은 무시하고 생각할것)

MySQL 연동가능한 환경구성

우리는 MySQL에 데이터를 등록하고 등록한 데이터를 보기위해 연동하기위한 환경을 조성할것이다.

project_westagram 내부의 project_westagram폴더로 들어간다.

settings.py에 들어간다.
스클롤을 아래로 내려 DATABASES를 본다.

ENGINE: SQLite일텐데 이미지와같이 mysql엔진으로 변경해준다.
NAME : 이따가 mysql에서 만들 데이터베이스 이름이다. 여기 이름과 이따가 만들 mysql 데이터베이스 이름을 동일하게 만들어주어야 데이터들이 연동이된다.
USER: 우리가 mysql을 실행하기 위해 처음 사용하는 명령어에 들어가는 이름이다.
예) $ mysql -u root -p
PASSWORD: mysql을 실행하면 여기에 작성한 password를 입력해야한다.
HOST: 우리가 사용할 기본주소이다.
PORT: <아직은 잘모르겠다..>


ALLOWED_HOSTS = ['*'] <- 원래는 특정호스트를 정해주어야하지만 테스트이기때문에 전부 허용한다는 *을 입력한다.
INSTALLED_APPS=[
#'django.contrib.admin',
#'django.contrib.auth', 이 두개는 사용하지 않을것이기때문에 주석처리함.

'corsheaders',<- 우리가 사용하기위해 등록
'account', <- 우리가 아까만든 앱(=폴더)이름인 account 등록
(board도 앱인데 지금은 무시할것)


settings.py 스크롤을 맨 아래로 내려 위 내용작성

이렇게 했으면 settigs.py 설정은 마친것이다!

mysql 실행후 settings.py에서 정한 이름으로 DATABASE 생성하기

다른 터미널창을 연다

  1. $ mysql -u root -p (mysql실행)
  2. password 입력 (비밀번호 입력)
  3. $ create database 데이터베이스이름; (새로운 데이터베이스 생성)
    (예 $ create database account;(<-settings.py에서 설정한이름))
  4. $ show databases; (데이터베이스 목록 보기)

    맨 윗줄에 우리가 방금 생성한 데이터베이스인 account가 생성된것을 확인할수있다.
    이 mysql데이터베이스 이름인 account는 우리가 위에서 settings.py의 DATABASES에서 NAME : account로 동일하게 설정했기때문에
    현재 장고와 mysql은 연동되어 있는 상태가 된것이다.

메인서버와 앱의 서버 연결, 그리고 앱과 View 연동

우리가 만든 프로젝트명인
project_westagram의 내부로 들어가면 같은이름의 project_westagram이 있는데 내부로 들어가면 urls.py가 있다
이 urls.py를 들어간다.

from django.urls import path,include
# import include 해주는거 중요

urlpatterns = [
    path('account/',include('account.urls'))
    ] # 앞의 account/ 는 기본주소 뒤에붙이는 경로 주소
    
 예를 들어 http://127.0.0.1:8000 이 기본주소이면 
 http://127.0.0.1:8000/account/ 경로에 들어간다는 것이다.
 

이러면 메인url경로와 앱의 경로가 연결이 된것이다.

이제 앱의 url경로로 들어가 view와 연결시켜주어야한다.

account 폴더로 들어가 urls.py 파일을 들어간다.

from .views import SignUp, SignIn
-> SignUp, SignIn 이것은 우리가 앞으로 작성할 views.py에 들어갈 클래스명이다.

urlpatterns=[
path('signup', SignUp.as._view())
]

이것은
http://127.0.0.1:8000/account/signup 경로에 들어가면

SignUp 클래스를 실행하겠다는 뜻이다.
클래스 실행시(.as._view())를 사용함

이제 경로설정은 모두 끝났다.

데이터를 넣기위한 로직을 만드는 views.py와
데이터를 넣을수있는 판을 만드는 models.py를 작성해야한다.

views.py 작성

먼저 account 앱 내의 views.py에 들어간다.

(처음 만들어서 보기 불편한 로직일수 있으니 이해부탁드립니다...)

from django.views import View
from .models import Account
import json
from django.http import request,JsonResponse

이렇게 먼저 import할것들을 작성해준다.

class SignUp(View): <- 여기의 View는 위의 import할때 View이다.

def post(self, request): <- 함수명인 post는 create역할을 담당하는 변수명으로 사용되며 request는 클라이언트에서 요청받는 내용이 들어오는 인자이다.

data = json.loads(request.body)
-> 클라이언트에서 오는 데이터는 request.body에 담겨 들어오는데 json.loads로 이 데이터를 json형식으로 바꿔주고 이것을 data변수에 담았다는 뜻이다.

data_key = list(data.keys())
-> data변수에 들어간 json형식의 데이터의 key값만 뽑아서 list화 시킨것을 data_key라는 변수에 담은것이다.

profile
Software Developer

0개의 댓글