프로젝트 만들기
터미널에서 django-admin startproject 프로젝트이름
이라고 입력하고 새 프로젝트를 만든다.
앱 생성
새로 만든 프로젝트 폴더로 들어가 프로젝트에서 사용할 앱을 추가해준다.
python manage.py startapp 앱이름 라고 입력하면 프로젝트 폴더안에 앱폴더가 생긴다.
프로젝트에 사용할 앱을 등록
프로젝트 폴더안에 있는 settings.py를 열고,
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
이 부분에 '앱이름'을 써주면 프로젝트에 앱 등록이 완료된다.
다음은 models.py(모델), views.py(뷰), urls.py(URL)에 코드를 써준다.
셋 중에 아무거나 먼저작성해도 되지만 views.py는 models.py의 코드를 import받고, urls.py는 views.py의 코드를 import받기때문에
models.py -> views.py -> urls.py 순으로 작성하는것이 좋은거같다.
모델의 코드를 작성하면 데이터베이스에 실제로 테이블을 만들어줘야한다.
python manage.py makemigrations 변경사항에 대한 마이그레이션을 만들어주고,
python manage.py migrate로 변경사항을 데이터베이스에 적용한다.
데이터를 받아 데이터베이스에 데이터를 저장한다.
class를 지정해 데이터베이스에 들어갈 테이블을 만들어내는곳이다.
from django.db import models
class Users(models.Model):
name = models.CharField(max_length = 50)
email = models.CharField(max_length = 100)
password = models.CharField(max_length = 100)
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
Usres라는 테이블을 만들고 name,email,password컬럼을 만들어주는것
CharField는 테이블에 들어갈 데이터타입을 지정한것이다. 문자열에 해당된다. max_length는 최대글자수를 의미
created_at은 최초시간, updated_at 업데이트시간을 의미 이건 자동으로 등록된다.
데이터를 request받고 response해주며 필요에따라 DB에 저장해주는 파일이다.
from django.shortcuts import render
from django.views import View
from django.http import JsonResponse
from .models import Users
import json
class MainView(View):
def post(self, request):
data = json.loads(request.body)
Users(
name = data['name'],
email = data['email'],
password = data['password']
).save()
return JsonResponse({'message':'SUCCESS'}, status=200)
def get(self, request):
user_data = Users.objects.values()
return JsonResponse({'users':list(user_data)}, status=200)
뷰에서는 다른곳에서 import해와야 하는 함수들이 있다. django.views에서 View, models.py에서 Users, Json
클래스 MainView는 View함수에서 상속받아 사용되고, post, get을 지정해서 사용한다.
data = json.loads(request.body)는 request한 body내용의 json파일을 파이썬이 알아들을수있게 변경하는 코드이다.
다음
Users(
name = data['name'],
email = data['email'],
password = data['password']
).save()
return JsonResponse({'message':'SUCCESS'}, status=200)
이부분은 아까 모델에서 만들었던 Users를 받아 형식에 맞는 request가 되면 형식에맞게 DB에 저장된다.
그러고 request가 잘 됐으면 message':'SUCCESS라는 메세지를 response해준다.
def get(self, request):
user_data = Users.objects.values()
return JsonResponse({'users':list(user_data)}, status=200)
이 부분은 테이블에 내용이 저장된것을 보여주는 것이다.
url을 받으면 path내용에 해당되는 이름은 ManiView의 해당 코드를 실행시킨다.
rom django.urls import path
from .views import MainView
urlpatterns = [
path('', MainView.as_view())
]
''은 runserver를 하면 처음실행되는 서버를 의미한다. 그래서 처음화면이 MainView의 코드를 실행하는 건데
as_view가 post로 들어오는지 get으로 들어오는지 알아서 걸러서 해당코드를 실행시켜준다.