@이것은 장고와 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에 데이터를 등록하고 등록한 데이터를 보기위해 연동하기위한 환경을 조성할것이다.
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 -u root -p (mysql실행)
- password 입력 (비밀번호 입력)
- $ create database 데이터베이스이름; (새로운 데이터베이스 생성)
(예 $ create database account;(<-settings.py에서 설정한이름))- $ show databases; (데이터베이스 목록 보기)
맨 윗줄에 우리가 방금 생성한 데이터베이스인 account가 생성된것을 확인할수있다.
이 mysql데이터베이스 이름인 account는 우리가 위에서 settings.py의 DATABASES에서 NAME : account로 동일하게 설정했기때문에
현재 장고와 mysql은 연동되어 있는 상태가 된것이다.
우리가 만든 프로젝트명인
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를 작성해야한다.
먼저 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라는 변수에 담은것이다.