[Django] DRF 초기 세팅 및 시작하기 기본 내용

나의 재물운? 연애운은?

AI가 봐주는 내 사주팔자 - 운세박사

https://aifortunedoctor.com/

[Django] DRF 초기 세팅 및 시작하기 기본 내용

영리치 0 2,465 2021.12.02 15:00

1150d8e908c1de696dfa22d55ea2d98c_1638428144_8109.png
 


git clone 보일러플레이트

git remote -v  // git 리모트 저장소 확인

sudo rm -rf .git // 보일러플레이트에 연동된 리모트 저장소 삭제

git init 

git remote add origin 신규 저장소


pip list 설치된 라이브러리 확인

deactivate (프로젝트 가상환경에 설치되지 않았다면, 가상환경 벗어나서)

python3 -m venv venv (가상환경 새롭게 생성)

source ./venv/bin/activate  (가상환경 실행)

pip install -r requirements.txt (가상환경에 의존성 다운로드)



1150d8e908c1de696dfa22d55ea2d98c_1638427783_9155.png
 

apps.py - 설정

models.py - 모델

serializers.py - json <-> 모델 변환

urls.py - url 엔드포인트에 요청이 왔을 때 어떤 뷰랑 연결할 지

view.py - 요청 시 처리될 작업들


[요청]

urls.py -> view.py



models.py

from django.db import models

from app.base.models import BaseModel


class Post(models.Model):
user = models.ForeignKey('user.User', verbose_name="사용자", on_delete=models.CASCADE)
title = models.CharField(verbose_name='제목', max_length=64, null=False, blank=True) #널은 허용하지 않지만 블랭크는 허용 이건 기본값이기도 함 default="??"
content = models.TextField(verbose_name="본문")
created = models.DateTimeField(verbose_name="생성일", auto_now_add=True) #auto_now_add=True 생성시간을 자동으로 넣어줌. 생성 됬을 때만 첫 입력됨.
updated = models.DateTimeField(verbose_name="수정일", auto_now=True) #auto_now=True 저장을 할 때마다 바뀜.

class Meta:
verbose_name ="게시글"
verbose_name_plural = "게시글들"

def __str__(self):
return self.title # 보기 편하게 하기 위함. 포스트 출력 시, 타이틀로 나오게 됨. (어드민이나 쉘 등에서)


apps.py

from django.apps import AppConfig

class PostConfig(AppConfig):
name = 'app.post'


serializers.py

from rest_framework import serializers

from app.post.models import Post

class PostSerializer(serializers.ModelSerializer):

class Meta: #옵션 값
model = Post
fields = [
'id',
'user',
'title',
'content',
'created',
'updated',
]



views.py

#리액트의 라우트 역할 보여지는 것 관리함. Post라는 엔드포인트에 Get이라는 메서드를 날렸을 경우에 하는 동작을 View에서 담당. api URL 엔드포인트라고 칭함.
#View에서 URL로 들어온 요청을 처리함.
# 전체 조회, 개별 생성, 개별 조회
# 기능이 나왔으면, URL 설계를 먼저 함. (엔드포인트 설계) 레스트 하게 설계를 하라.
# serializer는 오브젝트를 json으로 변환하는 것임. 그 반대도 가능.


from rest_framework.generics import ListCreateAPIView, RetrieveAPIView

from app.post.serializers import PostSerializer

from app.post.models import Post


class PostListCreateView(ListCreateAPIView): #전체 조회와 생성
serializer_class = PostSerializer
queryset = Post.objects.all()


class PostDetailView(RetrieveAPIView):
serializer_class = PostSerializer
queryset = Post.objects.all()
lookup_url_kwarg = 'post_id' #어떤 값으로 조회할 것인지?
lookup_field = 'id'


 


프로젝트 - urls.py

from django.urls import path

from app.post.views import PostListCreateView, PostDetailView

urlpatterns = [
path('', PostListCreateView.as_view()),
path('<int:post_id>', PostDetailView.as_view()),
]


전체 - urls.py

from django.urls import path, include

urlpatterns = [
path('user/', include('app.user.urls')),
path('verifier/', include('app.verifier.urls')),
path('post/', include('app.post.urls')),
]




Our Django settings


base 기본 설정

local 로컬 환경 설정

prod 배포 환경 설정

stag 개발 서버 나누어야 할 때



LOCAL_APPS = [
'app.staticfile',
'app.base.apps.BaseConfig',
'app.post.apps.PostConfig',
'app.chat.apps.ChatConfig',
'app.logger.apps.LoggerConfig',
'app.user.apps.UserConfig',
'app.verifier.apps.VerifierConfig',
]

위와 같은 형태로 만든 모델을 등록 시켜야함



모델 생성 후


python manage.py makemigrations

migrations 폴더 하위에 DB 설정 파일이 생성됨. (설정 파일 함부로 지우면 안됨. 디펜던시가 이미 생김. DB 테이블 싹 다 지우고 삭제하고 다시 하는 게 나음)

모델에 수정사항이 생겼을 때 다시 이 명령어 실행해야함


python manage.py migrate 
DB 설정 파일 토대로 DB에 반영시킴

모델에 수정사항이 생겼을 때 다시 이 명령어 실행해야함




Comments

나의 재물운? 연애운은?

AI가 봐주는 내 사주팔자 - 운세박사

https://aifortunedoctor.com/

Category
실시간 인기글
Magazine
훈남/훈녀
 
 
 
상점
Facebook Twitter GooglePlus KakaoStory NaverBand