728x90 반응형 source-code/Django34 Blogs App _ 좋아요 기능 똑같은 글을 써도, 다른 사람들이 많이 읽고 관심을 가져주면 더 의욕이 생기는 법. 이를 측정(?) 하기 위해 좋아요 기능을 구현해보자. 1. model 수정 좋아요 기능을 구현하기 위해서는... 이 녀석의 정체부터 알아야 한다! 좋아요란 뭘까? 기본적으로 좋아요는 각 게시글에 달리는 개념이다. 즉, Post라는 모델 안에 있는 속성 중 하나로 좋아요 를 추가해주면 될 테다. 또한 좋아요는 게시글과 유저와의 관계이기도 하다. 하나의 게시글은 여러 개의 좋아요를 가질 수 있고, 한 명의 유저는 여러 개의 게시글에 좋아요를 누를 수 있다. → 이런 속성의 field 이름은??? 바로 바로 ManyToManyField ! 마지막으로 좋아요 횟수는 게시글과 유저와의 관계이지 단독적인 횟수를 의미하는 게 아니다!.. 2021. 1. 10. Blogs App _ 동적 페이지 만들기 현재 우리의 페이지는 글로만 이루어져 있다. 이런 블로그는 아무도 관심을 가지지 않는다! 읽는 재미도 없다. 따라서 우리는 각 게시글에 사진을 올릴 수 있는 기능을 만들 예정. 그전에, 동적 페이지 / 정적 페이지라는 개념이 있다. 이게 뭔디? 정적 페이지 : 정적인 거! 사전에 준비된 데이터밖에 띄워주지 못함. 동적 페이지 : 동적인 거! 활발한 거! 사전 준비 데이터 이외에 이용자가 입력한 데이터도 띄워줄 수 있음. 으로 생각하면 쉽겠다. 우리는 일반 이용자도 게시글과 사진을 올리게 해 줄 테니 나름 동적인 페이지라고 할 수 있다. 와우! 동적인 페이지를 향한 첫 번째 발걸음. 1. static 폴더 만들기 blogs 앱 안에 static이라는 폴더를, 그 안에는 image라는 폴더를 만들자. ima.. 2021. 1. 8. Blogs App _ 인증 기능 with 사용자 지정 인증 기능을 개발할 때 django의 User 테이블을 통해 만들었다. 즉 이미 django에서 정해준 값만을 입력할 수 있었다!! 당연히 항상 이런 상황만 생기지는 않는다. 그렇기 때문에 이번에는 직접 User 모델을 생성하고 회원가입 및 로그인도 구현해볼 예정. 우선 가장 중요한...사항....! 지난번 django의 User는 별다른 설정 없이, migrate를 했을 때 자동으로 생성됨을 알아봤다! 그런데 이걸 마음대로 커스텀하면...? 기존의 User와의 충돌이 거의 백 프로! 생기고 만다. 이때 해결방법은? 간단하다! 데이터베이스를 몽땅 날리고, User커스텀을 완료한 후 새로 migrate 해주면 된다. 참 쉽다! 1. accounts 앱 생성 회원가입을 담당하는 accounts라는 앱을 새로.. 2021. 1. 7. Blogs App _ CRUD with 함수형 보통은 함수형으로 작성을 먼저 할 텐데... 뭔가 순서가 바뀐 느낌. 아무튼 이번에는 CRUD를 함수형 view를 사용해 구현해보자. 1. url 수정 viw의 이름은 다 똑같이 쓸 테지만, 클래스형 뷰에서 함수형 뷰로 바뀌었으니 url수정이 필요하다! urls.py 사실 수정이랄 것도 없다... .as_view()만 다 빼주면 된다. 2. R 제일 먼저(쉬운) R. 게시글 전체를 띄워주는 기능 대신, 자신이 작성한 게시글만 띄워주도록 해보자. 해당 함수는 PostChangeLV, html명은 post_change_list.html ! views.py 이 정도만 돼도 할만하다! Post라는 모델의 모든 것을 불러왔고, 이를 context에 담아 post_change_list.html에 전달! post_c.. 2021. 1. 6. Blogs App _ CRUD 대망의 CRUD 시간이다. 회원가입을 구현했으니... CRUD에서도 이를 적용시켜줘야 한다. 이게 무슨 뜻? ↓ 게시글 열람(R)은 모든 사용자 O 게시글 생성(C)은 로그인 한 사용자만 O 게시글 수정(U) 및 삭제(D)는 해당 게시글 작성자만 O 말만 들어도 앞이 캄캄. 어떻게 구현하면 좋을까. 1. model 수정 현재 각 게시글들은 이를 작성한 사람, 즉 소유자를 고려하지 않은 상태다. 게시글 별 소유자 확인이 필요하므로 owner라는 field를 model에 추가한다! models.py 인증 기능을 구현할 때 사용했던 User 테이블! django에서 기본적으로 제공하는 모델이라 배웠었다. 이를 각 게시글과 연결하기 위해 model.py에서 import! slugify라는 함수도 import 했.. 2021. 1. 5. Blogs App _ 인증 기능 어떤 웹을 만들던 인증 기능은 빼놓을 수 없다. 아무나 글을 수정하거나 지우면 안 되니까! 우리의 친절한 django는 이러한 중요 기능을 기본적으로 제공하고 있다. 오늘도 개발자 만세! 인증 기능을 담당하는 앱은 django 패키지의 django.contrib.auth ← 요 녀석이다. 해당 앱은 User라는 모델 클래스를 기본적으로 제공하고 있는데, User 테이블의 구조는 다음과 같다. 필드명 타입 제약 조건(default) 설명 id Integer PK, Auto Increment 기본 키 Username CharField(30) Unique 로그인 이름 first_name CharField(30) Blank 사용자 이름 last_name CharField(30) Blank 사용자 성 email .. 2021. 1. 5. Blogs App _ 검색 기능 블로그에 있는 수많은 게시글 중 하나를 보고 싶을 때, 모든 게시글을 뒤적일 수는 없는 노릇. 검색을 통해 원하는 게시글을 찾을 수 있는 기능을 추가해보자. 1. urls 작성 urls.py 검색을 담당하는 함수 SearchFormView 에 대한 url 요청을 추가! 2. forms 작성 검색을 하기 위해서는 할 수 있는 틀이 필요하다! → forms.py 에서 틀을 만들어주자. forms.py 이전 CommentForm을 작성했던 곳에 SearchForm도 적어주자. class의 두가지 인자 중, 이번에는 forms.Form 이라는 임의의 입력 틀(모델은 참조하지 않은)을 만들어줬다! 3. views 작성 views.py 우선 django generic view에서 FormView를 import! 방.. 2021. 1. 4. Blogs App _ 댓글 기능 아무런 소통 없이 인기 블로그가 되기란 불가능하다. 따라서 각 게시글에 댓글을 달 수 있는 기능을 구현할 예정! 1. model 생성 댓글을 담당할 모델을 새로 하나 만들어주자! models.py ForeignKey를 통해 Post 모델을 상호 참조하도록! on_delete=models.CASCADE 속성을 줘서 게시글이 지워지면 댓글도 지워지도록! 했던 내용이라 신난다! 2. Form 생성 Form이라는 녀석이 등장했다! 쉽게 말해 이용자가 입력할 수 있는 틀을 만든다고 생각하면 된다(아주 쉽게 말해). Form을 이용하기 위해 blogs앱 내에 forms.py 라는 파일 생성! 고정된 위치가 있는 건 아니지만... blogs앱에서 사용할 Form이므로 여기 만들어두자. forms.py django에서.. 2021. 1. 2. Blogs App _ tag 기능 인기 Blog라면 각 글마다 달 수 있는 태그 기능이 필요할 테다. 각 글마다 몇 개의 태그를 달고, 또 이러한 태그들을 한눈에 볼 수 있는 기능을 추가해보자. 1. 패키지 설치 처음 태그 기능을 생각했을 때는 새로 모델을 만들고... 상속받고... 어쩌고... 를 해야 할 것만 같았다. 하지만 인기 기능인만큼 django에서 미리 만들어둔 패키지가 존재한다. 개발자 만세! pip install을 통해 django-taggit 과 django-taggit-templatetags2 를 설치. 똑같이 패키지를 설치하더라도, 설정 파일(즉 settings)에 등록하는 경우와 그렇지 않은 경우가 존재한다. 지금 설치하는 두 패키지는 모두 settings에 등록을 해야 하는데, 이때 어떤 이름으로 등록할지 정해져.. 2021. 1. 1. 이전 1 2 3 4 다음 728x90 반응형