오늘 학습 내용
post 기능 구현하기
- post app 생성 및 settings에 등록

필요한 기능
- 이미지 여러개(FK) / 글 / 작성자 / 작성일자 / 수정일자
Post Model
- 작성일자, 수정일자는 공통적으로 사용될 필드
- TimestampModel (추상기반 클래스)로 생성하여 활용 (utils/models.py)
- image = models.ImageField
- def str(self):
- 필수 X , admin페이지에서 편하게 보기위해 사용함


Post 목록 페이지 만들기
- 디자인 조금 pt -3


Swiper.js
- Swiper
- 현대적이고 강력한 이미지 캐러셀 라이브러리, 다양한 옵션과 기능을 제공하며 반응형 디자인을 지원
swiper-pagination
- 슬라이더 하단에 페이지네이션을 표시하여 사용자가 현재 슬라이드의 위치를 확인할 수 있게 함
- 사용자에게 포스트 별로 업로드된 이미지들을 슬라이드 형태로 보여줄 수 있음
- Swiper.js
- 매우 유연하고 다양한 커스터마이징 옵션을 제공
- 필요에 따라 슬라이더의 동작 방식이나 스타일을 조정할 수 있음
1


2 font awesome


- linebreaksbr : 내용 줄넘김 기능 추가


Post.objects.all().select_related('user').prefetch_related('images')
- DB 부하를 줄이기 위하여 select_related / prefetch_related 사용
- select_related
- Post 가 ForeignKey를 가지고 있으면 사용 가능
- prefetch_related(역참조)
- PostImage 가 ForeignKey로 Post를 가지고 있을때 사용
- ManyToMany 일때 사용
전체적인 구조
for 루프를 사용해 각각의 Post 객체와 해당 포스트에 연결된 PostImage 객체들을 렌더링
- 이를 통해 여러 개의 이미지가 슬라이더로 표시
- 이미지 슬라이드 하단에 페이지 번호 또는 도트(dots) 형식의 페이지네이션이 표시
Post 목록 무한 스크롤 만들기
- 스크롤 위치를 감지하여 특정 이벤트를 발생시키는 기능을 제공
- 무한 스크롤을 구현하는 데 유용하게 사용 가능


포스트 생성, 수정 페이지 만들기
- Django와 함께 사용할 수 있는 JavaScript 라이브러리
- Django의 폼셋(Formset) 기능을 클라이언트 측에서 동적으로 추가하거나 삭제하는 기능을 제공
- 폼셋(Formset)
- 같은 형태의 여러 폼을 하나의 폼 그룹으로 관리할 수 있는 Django의 기능
- jquery.formset은 이를 더욱 사용자 친화적으로 만들어 주는 도구
create


- 오류발생
- 해결: form_class=PostForm 추가

디자인 다듬기
- utils/forms.py 생성
- create의 본문 칸 줄이기 및 마우스로 본문 칸 조절 불가능 하게 설정

- 사이즈 수정


- static/js/jquery.formset.js 에 위의 파일 복사 붙여넣기
- extra: 기본적으로 추가할 자식 폼의 수를 설정
- can_delete: 자식 폼의 삭제 여부를 설정
2
-
이미지 파일 추가하는 기능 추가


-
form_valid 수정

-
prefix = images 인 이유

Update

- 생성 버튼 만들기

- Django에서 모델의 폼셋을 생성하는 유용한 도구
- 부모 모델과 자식 모델 간의 관계를 다루는 폼셋을 자동으로 생성 가능
- 주로 부모 모델과 관련된 여러 자식 모델 인스턴스를 한 번에 편리하게 관리할 때 사용
- 주로 부모 모델과 자식 모델 간의 ForeignKey 관계를 관리하는 데 사용
- 부모 모델의 인스턴스를 편집할 때 자식 모델의 인스턴스도 함께 관리할 수 있는 폼셋을 자동으로 생성
- Django의 폼셋(Formset)을 처리할 때 중요한 역할을 하는 관리 폼(Management Form)
- 이 관리 폼은 폼셋의 여러 폼을 관리하고, 폼셋의 상태를 유지하는 데 필요한 정보를 제공
역할과 중요성
- 폼셋 상태 관리
- 관리 폼은 폼셋의 상태를 관리하기 위해 사용
- 이상태 정보에는 폼셋의 총 폼 수, 현재 폼 수, 추가된 폼의 수 등
- 폼셋이 제대로 작동하는 데 필요한 메타 정보가 포함
- 폼셋 내 폼 수 조정
- 관리 폼은 폼셋의
extra 폼 수(즉, 기본적으로 추가할 폼 수)와
- 삭제된 폼 수를 서버로 전송하는 데 사용, 이는 폼셋의 각 폼이 제대로 처리되도록 함
- 폼셋 데이터 처리
- 관리 폼은 폼셋 데이터와 관련된 정보(예: 폼의 순서, 삭제 플래그 등)를
- Django가 올바르게 처리할 수 있도록 돕는다.
댓글 모델 만들기, 태그 모델 만들기

새롭게 알게된 내용
- class PostForm(forms.ModelForm):
- from django import forms 필요
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
- super.init(*args, **kwargs): 오류 발생
- super().init(*args, **kwargs) : 이게 맞는 표현
# 현재 마이그레이션 된 파일 확인
>> python manage.py showmigrations
# 특정 마이그레이션 적용
# 이후 미적용 대상인 마이그레이션 파일 삭제
>> python manage.py migrate post 0001
# 다시 가장 최신의 마이그레이션 파일 만들기
>> python manage.py makemigrations
# 마이그레이트
>> python manage.py migrate
# 0번 마이그레이션 파일로 돌리고 싶을 때
>> python manage.py migrate post zero
어려운 내용(추가 학습 필요)
오늘 발생한 문제(발생 했다면)