Byeonguk Kim

안녕하세요. 29살의 조금은 늦은 나이로 새롭게 개발자로 시작하는 신입 개발자입니다. 포트폴리오 [https://deaguowl.github.io]

Django 09. 인스타그램(1~2) - 앱 및 모델 만들기

04 May 2019 » Django

2019.05.04 인스타그램 클론 코딩하기(앱 및 모델 만들기)

인스타그램 만들기(1~2)

구현 로직

  1. photo 앱 만들기
  2. 모델 설계하기
  3. views 설계하기
    1. list페이지
    2. 상세페이지
    3. 삭제하기
    4. 수정하기
    5. 생성페이지
  4. url 연결시켜주기
  5. template 만들기
    1. create/list/update/delete/detail
  6. 사진 업로드 할 수 있도록 만들기
  7. success url을 get_absolute_url로 연동시켜보기
  8. account 앱 만들기
    1. 로그인/로그아웃 기능 구현하기
    2. 로그아웃 되었을 때는 create 및 sign out가 안 보이도록 구현하기(분기)
  9. 권한 문제 해결하기
    1. html 기준에서 해결하기
    2. 링크로 들어와도 안 되도록 해결해보기
      1. view를 조정하기
  10. 댓글 기능 구현하기
    1. 댓글은 상세페이지에서 가능하도록 하기
    2. 소셜 댓글기능으로 구현하기
  11. 좋아요 버튼 만들기
    1. 스프라이트 이미지 기법 활용하기
    2. 클릭하면 색깔 바뀌도록 구현하기
    3. 로그인을 해야지 버튼 클릭이 되도록 하고 클릭을 하면 like count 올라가기
    4. like에 대한 정보를 저장하기
    5. 좋아요 counting 표시해주기
    6. 디테일 페이지에서 좋아요를 누르면 디테일 페이지에서 그대로 유지하도록 하기
      1. view와 like에서의 분기
      2. 레퍼러를 활용하여 해당 주소가 어디서부터 시작됬는지 확인한다.
  12. 좋아요한 포스팅만 보기 기능 구현하기
  13. 포스팅 저장하기 기능 구현하기
  14. 저장한 포스팅 리스트 페이지 구현하기
  15. 좋아요한 포스팅 및 저장한 포스팅 리스트 보기는 로그인한 사람만 보여주기
    1. view단에서 시행
      1. dispatch 활용
      2. LoginRequiredmixin
    2. html 활용
  16. my page에 내가 올린 사진들만 나오도록 구현한다.
  17. my page에 팔로우 기능 추가하기

이번 시간에 할 것(1~2)

  • photo 앱 만들기
  • 모델 설계하기
  • 초기 설정 및 프로젝트 시작은 bookmark 만들기를 참고해주세요 :)

1. photo 앱 만들기

프로젝트 시작 준비하기

가상 환경 만들기

  • pip3 install virtualenv
  • virtualenv -python = python3.7 venv
  • venv라는 가상환경 생성

가상 환경 실행하기

  • source venv/bin/activate
  • 해당 터미널에 venv ) 표시 확인

장고 설치하기

  • pip install django==2.2
  • 원하는 버전의 장고 설치
  • 가상환경이므로 더 이상 pip3를 해줄 필요 없음

프로젝트 생성하기

  • django-admin startproject config .
  • config는 프로젝트명 뒤에 .은 해당 디렉토리에 생성
  • config내에 setting 및 url.py 등 관련 내용 생성

데이터베이스 migrate해주기

  • 생성된 프로젝트에 대한 데이터베이스 초기화
  • python manage.py migrate

photo 앱 만들기

  • python manage.py startapp photo
  • settings.py에 installed app에 photo 추가해주기

photo model 설계하기

  1. 해당 photo의 models.py로 이동
    1. author/ text/ imange/ created/ updated 구현
  2. __str__ 을 통해 admin 사이트 화면 표시 구현
  3. class Meta를 통해 ordering 정렬

7A24F85A-83A2-4C7B-AB16-C01468EE1047

  1. 장고에서 구현해주고 있는 user를 불러와서 photo를 foreignkey로 연결해줌
  2. upload_to=”timeline_photo/Y/m/d”
    1. timeline_photo폴더에 연도, 월, 일을 만들어서 사진을 저장
    2. media 폴더를 생성하여 그 아래에 지속적으로 저장되도록 구현
      1. setting의 값 설정

D5616EDF-EA25-439D-8CBA-4AA2F2545326

  1. MEDIA_URL 을 설정하고 ROOT를 잡아주어서 저기로 사진이 저장되도록 한다.

모델 설계 이후 migrations 해주기

  1. Image파일을 업로드 하기 위해 pip install Pillow를 해줘야 한다.
    1. pip install Pillow
  2. python manage.py makemigrations photo
  3. python manage.py migrate

admin 사이트에 등록하기

  1. admin.py로 이동
  2. from .models import Photo
  3. admin.site.register(Photo)

admin 사이트에서 확인해보기

  1. 관리자 계정 만들기
    1. python manage.py createsuperuser
  2. python manage.py runserver 8000
  3. 해당 링크의 /admin으로 이동하여 글 등록해보기

C3DB6E92-B1A6-47FE-B88B-51CF5566A230

  • 포토 몇개 등록해보기
  • media 폴더에 잘 저장되는지 확인해보기