👍 좋아요 모델 구현하기 / 모델클래스 만들기
좋아요 모델에서 필요한 기능 분석 필요
- 좋아요는 게시글에 유저당 한 개만 누를 수 있다.
- 좋아요 카운팅
- 좋아요를 눌렀을 때 버튼 변화
- 게시글(그것이 댓글이든, 유튜브 영상이든, 블라인드 포스트이든)에 “좋아요”를 누를 수 있다. (이떄 좋아요 개수가 증가한다.)
- 한 사용자는 하나의 게시글에 단 하나의 좋아요만 할 수 있다!
- 이미 좋아요 했는지 여부를 표시해 주어야 한다.
- 이미 좋아요를 했다면, 좋아요 버튼을 다시 누름으로써 좋아요를 취소할 수 있다. (이때 좋아요 개수가 감소한다.) - 게시글의 리스트(최신 게시글이 맨 위로 오도록)를 보여준다. 이 때 좋아요 받은 개수도 같이 보여준다.
>>> 좋아요 모델 구현하기
⭐ 좋아요 앱 생성하기
python manage.py startapp 'app명' ( 예시: python manage.py startapp tabom )
터미널에 입력하고 전체 프로젝트 폴더를 닫았다 열면 앱생성이 보인다.
앱명은 다른 클래스 또는 변수명이 겹치지 않게 만드는 것이 좋다.
⭐ 생성한 앱 등록하기 (settings.py)
새로 생성한 tabom 앱을 setting.py -> INSTALLED_APPS에 address를 입력하여 데이터베이스와 싱크할 수 있도록 세팅
앱이름+apps(apps.py에 Config가 들어있다.)+디폴트 카멜형식으로 작성(app이름+Config)
"tabom.apps.TabomConfig",
>>> 모델클래스 만들기
⭐ 디렉토리, 파일 생성
- tabom안의 models.py 삭제, models 파이썬패키지 생성 (model파일을 디렉토리로 변경)
- models디렉토리 안에 article.py, like.py, user.py 파일 생성 __init__.py는 자동생성파일
- 코드 붙여넣기
*article.py
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=255)
updated_at = models.DateTimeField(auto_now=True)
created_at = models.DateTimeField(auto_now_add=True)
*like.py
from django.db import models
from tabom.models.article import Article
from tabom.models.user import User
class Like(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
article = models.ForeignKey(Article, on_delete=models.CASCADE)
updated_at = models.DateTimeField(auto_now=True)
created_at = models.DateTimeField(auto_now_add=True)
*user.py
from django.db import models
class User(models.Model):
name = models.CharField(max_length=50)
updated_at = models.DateTimeField(auto_now=True)
created_at = models.DateTimeField(auto_now_add=True)
*__init__.py
from tabom.models.article import Article as Article
from tabom.models.like import Like as Like
from tabom.models.user import User as User
⭐ 마이그레이션(migration)
(마이그레이션 과정에서 에러가 발생하였다. MySQL설치 과정 건너뛰었던 문제 - 설치 후 해결)
- python manage.py makemigrations tabom
- python manage.py sqlmigrate tabom 0001
- python manage.py migrate
>> 데이터베이스 리프레시 후 확인 / 잘 들어왔음을 알 수 있다.
⭐ ./test.sh
Black, isort, mypy 테스트
오류발생
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([WindError 10061])")
마이그레이션 과정에서 에러 발생, MySQL과 데이터베이스를 찾지 못하는 문제같다.
- 해결방법
docker부분 강의 때 windows는 도커실행이 안될 수도 있어서 Mysql을 수동으로 설치해줘야 하는데 건너뛰었다.
Mysql설치
https://dev.mysql.com/downloads/mysql/
- 데이터베이스 설정 후 연결테스트로 확인해보기
'💻 개발블로그 > django' 카테고리의 다른 글
Django 포트 사용 에러 (0) | 2022.05.10 |
---|---|
Django심화강의:2주차(05)(20220216) (0) | 2022.02.17 |
Django심화강의:2주차(03)(20220215) (0) | 2022.02.16 |
Django심화강의:2주차(02)(20220215) (0) | 2022.02.15 |
Django심화강의:2주차(01)(20220214) (0) | 2022.02.14 |