나의 재물운? 연애운은?
AI가 봐주는 내 사주팔자 - 운세박사
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 (가상환경에 의존성 다운로드)
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 테이블 싹 다 지우고 삭제하고 다시 하는 게 나음)
모델에 수정사항이 생겼을 때 다시 이 명령어 실행해야함
모델에 수정사항이 생겼을 때 다시 이 명령어 실행해야함
나의 재물운? 연애운은?
AI가 봐주는 내 사주팔자 - 운세박사