본문 바로가기

내일 배움 캠프

(60)
게시글 검색 기능 구현 게시글 검색 기능 만들기 게시글 검색 기능은 두가지 방법으로 만들 수 있다! Django REST Framework에서 제공하는 내장함수를 이용하는 방법 filter() - Q 를 이용하는 방법 나는 APIView를 이용할꺼라서 2번째 방법을 선택 했다. 먼저 Q를 사용하기 위해 import를 해주고, 주소창에 어떤식으로 받아올지 정해야한다. # blogs/views.py from django.db.models import Q .... class SearchView(APIView): def get(self, request, blog_name): """게시글 검색 기능""" search_word = request.GET.get('search-word','') # 주소창에 ?search-word='' 형식으..
공감 기능 구현과 one-to-one/many, many-to-one/many 관계 one-to-one, one-to-many, manytoone, manytomany one-to-one OneToOneField 사용 one-to-many 접합/중개 모델을 사용하여 일대 다 관계 표현 class Number(models.Model): number = models.CharField(max_length = 10) class Person(models.Model): name = models.CharField(max_length = 200) class PersonNumber(models.Model): person = models.ForeignKey(Person, on_delete = models.CASCADE, related_name = "numbers") number = models.Forei..
Pagination (페이지네이션) 구현하기 Pagenation (페이지네이션) 구현하기 1. Pagenation (페이지네이션) 이란? 일정 기준으로 데이터를 분할해서 전달하는것을 의미한다. 아래 그림과 같이 거의 모든 웹사이트에서 쓰이는 기능인데, 글을 '페이지' 순으로 넘기는 것과, '더보기'를 통해 아래로 계속 내려가며 보는것 둘다 페이지네이션으로 구현 가능하다. 당연하지만 구현하는 방식이 다르다 - offset(페이지 순) 과 cursor(더보기) 방식으로 나뉨. 또는 2. pagination 구현 Django REST Framework에서는 pagination을 내장함수로 가지고 있다. 그래서 import만 해주면 쉽게 구현이 가능하다. pagination 클래스 종류 PageNumberPagination page : 데이터를 일정 크기..
대댓글 기능 만들기 대댓글 기능 만들기 먼저 모델을 만들어 주자. 기존의 Comment 모델과 다른점이라면 Comment 모델을 Foreignkey로 받아온다는 점이다. 어떤 댓글에 대댓글을 달았는지 알아야 하니까 .. # blogs/models.py class ReComment(models.Model): """대댓글""" user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="작성자") article = models.ForeignKey(Article, on_delete=models.CASCADE, verbose_name="게시글") comment = models.ForeignKey(Comment, on_delete=models.CASCADE, rela..
조회수 기능 만들기(2)_IP기반 조회수 기능 만들기(2) - IP 기반 먼저 블로그 앱의 models에 사용자 IP, 날짜, 블로그ID, 게시글ID를 저장할 모델을 만들어준다. # blogs/models.py class ArticleHits(models.Model): client_ip = models.GenericIPAddressField(protocol='both', unpack_ipv4=True, null=True, verbose_name='사용자 IP주소') date = models.DateField(auto_now_add=True, verbose_name='조회 날짜') article = models.ForeignKey(Article, on_delete=models.CASCADE) blog = models.ForeignKey(B..
Import could not be resolved 오류 Import could not be resolved 오류 해결법 평소에 이와같은 오류들이 종종 vs code에서 나타나곤 한다. 모두에게 해당이 될지는 모르겠지만 보통 이런 현상은 두가지로 나뉘는것 같다. 패키지 설치가 안됐을 경우 가상환경이 제대로 안잡혔을 경우 만약 패키지가 정상적으로 설치됐다면 가장 하단에 있는 인터프리터 경로를 살펴보자. 터미널로 가상환경을 잡아줄때 인터프리터 경로가 안바뀌는 경우가 종종 있다. 그래서 사진처럼 수동으로 가상환경을 잡아주어야 한다. 만약 여기서 인터프리터가 가상환경이 아닌 그냥 기본 버전으로 잡혀있다면 Import could not be resolved 오류가 나는것이다!
사용자 ip 가져오기 & 조회수 기능 만들기(1) 사용자 ip 가져올때 주의할 점 * 사용자 ip를 가져올때는 그냥 runserver가 아니라 뒤에 0.0.0.0:8000을 붙여주어야 한다. 차이점을 알아보자면, runserver runserver만 하게 된다면 ip를 불러올때 기본 로컬 주소인 127.0.0.0.1을 가져온다. runserver 0.0.0.0:8000 0.0.0.0은 local machine의 모든 IPv4 주소를 의미하기 때문에 로컬 호스트의 모든 IPv4로 되어있는 호스트에 접근이 가능하다.:8000은 포트를 의미하고, 현재 요청된 호스트의 IP나 이름에 상관없이 실행한다는 의미이다. 자, 0.0.0.0:8000를 쓸 준비가 됐다면 settings.py에 있는 ALLOWED_HOSTS도 변경 해주어야 한다. # 수정전 setting..
TIL) 12주차 2일 알고리즘 문제를 많이 푸는것도 중요하지만, "memoization, DP, 완탐(bfs,dfs), 그래프, 트리, 최단경로, 그리디, 구현" 위주로 문제를 많이 풀어보는것이 중요함. 그리고 공식문서를 볼 때 버전을 맞춰서 읽는 게 중요함! (버전은 3.8 ~ 3.9 사이가 많이 쓰인다고 함) 내일도 화이팅! itertools 반복자(iterator) 관련 다양한 함수 제공 - https://docs.python.org/ko/3.8/library/itertools.html itertools — 효율적인 루핑을 위한 이터레이터를 만드는 함수 — Python 3.8.16 문서 itertools — 효율적인 루핑을 위한 이터레이터를 만드는 함수 이 모듈은 APL, Haskell 및 SML의 구성물들에서 영감을 ..