본문 바로가기

전체 글

(62)
게시글 검색 기능 구현 게시글 검색 기능 만들기 게시글 검색 기능은 두가지 방법으로 만들 수 있다! 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주차 3일 기본적인 Linux 명령어와 옵션의 구조 시작하기 앞서 리눅스를 사용하는 이유는 다음과 같다. 리눅스는 오픈소스 키 때문에 무료로 사용 가능하다 다양한 소스코드들을 보고 수정할 수 있다. 다른 종류의 OS에 비해 가볍고, 비교적 안정적인 환경에서 운영 가능하다 ls 파일 목록을 보여주는 명령어 ls -l : 파일 목록을 더 자세히 보여주는 옵션 ls -a : 숨김 파일까지 보여주는 옵션 ls -al : 2개 이상의 옵션을 사용할 수도 있음( 옵션의 순서는 무관 ) cp cp [파일명] [복사할 파일명] : 파일을 복사하는 옵션 cp -r [폴더명] [복사할 폴더명] 폴더를 복사하는 옵션( 폴더를 복사 할 때는 -r 옵션이 꼭 필요함 ) pwd 현재 경로 확인하는 옵션 mkdir 디렉토리 생성하는 옵션 m..