TIL - Django 2

KDG·2020년 6월 13일
0

Django

* Django프로젝트의 과정

  1. 프로젝트 만들기
    터미널에서 django-admin startproject 프로젝트이름
    이라고 입력하고 새 프로젝트를 만든다.

  2. 앱 생성
    새로 만든 프로젝트 폴더로 들어가 프로젝트에서 사용할 앱을 추가해준다.
    python manage.py startapp 앱이름 라고 입력하면 프로젝트 폴더안에 앱폴더가 생긴다.

  3. 프로젝트에 사용할 앱을 등록
    프로젝트 폴더안에 있는 settings.py를 열고,

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
이 부분에 '앱이름'을 써주면 프로젝트에 앱 등록이 완료된다.
  1. 다음은 models.py(모델), views.py(뷰), urls.py(URL)에 코드를 써준다.
    셋 중에 아무거나 먼저작성해도 되지만 views.py는 models.py의 코드를 import받고, urls.py는 views.py의 코드를 import받기때문에
    models.py -> views.py -> urls.py 순으로 작성하는것이 좋은거같다.

  2. 모델의 코드를 작성하면 데이터베이스에 실제로 테이블을 만들어줘야한다.
    python manage.py makemigrations 변경사항에 대한 마이그레이션을 만들어주고,
    python manage.py migrate로 변경사항을 데이터베이스에 적용한다.

  3. 데이터를 받아 데이터베이스에 데이터를 저장한다.

* models.py

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 업데이트시간을 의미 이건 자동으로 등록된다.

* views.py

데이터를 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)
    
이 부분은 테이블에 내용이 저장된것을 보여주는 것이다.

* urls.py

url을 받으면 path내용에 해당되는 이름은 ManiView의 해당 코드를 실행시킨다.

rom django.urls import path
from .views import MainView

urlpatterns = [
  path('', MainView.as_view())
]

''은 runserver를 하면 처음실행되는 서버를 의미한다. 그래서 처음화면이 MainView의 코드를 실행하는 건데
as_view가 post로 들어오는지 get으로 들어오는지 알아서 걸러서 해당코드를 실행시켜준다.

0개의 댓글