Byeonguk Kim

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

Django 10. 인스타그램(3~4) - views설계 및 url연결

04 May 2019 » Django

2019.05.04 인스타그램 클론 코딩하기(views 및 url 연결하기)

인스타그램 만들기(3~4)

구현 로직

  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에 팔로우 기능 추가하기

이번 시간에 할 것(3~4)

  • views 설계하기
  • URL 연결하기

views 설계하기

  1. class형 뷰의 generic view를 이용하여 구현
  2. ListView/CreateView/UpdateView/DeleteView/DetailView 구현

스크린샷 2019-05-04 오후 5 01 13

  1. Listview, Createview, deleteview,detailview,updateview 임포트 해오기
  2. PhotoList:
    1. 가장 메인에서 보여줄 로직
    2. 북마크 모델을 불러와서 데이터를 활용할 것이라고 기제
  3. PhotoCreate:
    1. 북마크 모델을 활용하는데
    2. 생성할 때 채워야 할 필드 확인
    3. 이후 연결될 템플릿 이름은 bookmark_create 일 것이다.
    4. 성공하면 메인 페이지로 돌아가도록 연결(이후 url로 연결)
  4. PhotoUpdate:
    1. Create와 마찬가지로 field가 꼭 필요하다
    2. 대부분 Create와 동일
  5. PhotoDelete와 PhotoDetail
    1. 삭제와 상세페이지는 특별한 로직이 필요하지 않음
    2. 템플릿과 연결을 잘 시킬 수 있도록 신경

URL 연결하기

2차 URL 연결하기

  1. photo의 urls.py 생성
  2. URL 작성하기

스크린샷 2019-05-04 오후 5 05 57

  1. app_name 설정을 통해 namespace(이름공간)확보
    1. 다른 앱들과 url pattern 이름이 겹치는 것을 방지하기 위해 사용한다.
  2. path(url pattern, view, url pattern name),
    • 함수형 뷰는 이름만 적으면 되고 클래스형 뷰는 이름.as_view()
    • name은 나중에 불러쓰기 위해 지정한다.
  3. url pattern
    1. <int:pk>
      1. 해당 작성에 대한 번호로 이동해야지 상세페이지 및 그 글에 대한 삭제, 수정을 할 수 있다.
  4. views 경로 지정
    1. 해당 url이 들어오면 views의 해당 view의 로직을 따라서 처리한다.
  5. name
    1. 네임 설정을 통해 이후 클릭하면 해당 url로 이동하도록 설정한다.

1차 URL 연결하기

  1. config의 url.py에 작성
  2. 2차 URL을 설정한 이후에 가장 기본이 되는 URL과 연결시켜준다.

스크린샷 2019-05-04 오후 5 08 45

  1. 기본적으로 admin 주소는 설정되어 있다.
  2. include를 통해서 해당 주소로 연결시켜준다.
    1. 가장 기본 주소가 들어오면 photo의 url로 연결시켜줘라.

이까지 하면 views 로직을 만들고 URL까지 연결시켜주었다. 다음 시간에는 직접 화면에 구성해줄 Template를 구성한다.