본문 바로가기

TIL

TIL 061323

https://www.django-rest-framework.org/api-guide/filtering/

 

Filtering - Django REST framework

 

www.django-rest-framework.org

지난번 프로젝트에 못 했던 페이지네이션&카테고라이즈 동시 구현

페이지네이션에서 queryset 부분을 바꿔보려고 엄청 헤맸는데 django filter backend로 간단히 해결

너무 간단해서 좀 허무하다 ㅎㅎㅎ

그래도 잘 돼서 다행!

가이드에 나온대로 pip install django-filter한 후 settings.py의 installled apps에 django_filter를 추가한다.

views.py에서 ListAPIView를 쓰는 클래스를 만든다.

class ReviewTypeView(ListAPIView):
    """
    타입/지역별 리뷰 목록 조회
    """
    queryset = Review.objects.all().order_by("-created_at")
    serializer_class = ReviewSerializer
    filter_backends = [DjangoFilterBackend]
    filterset_fields  = ["content_type_id", "area_code", "sigungu_code"]

urls.py에 path를 지정해주고 정한 url 끝에 ?content_type_id=12&area_code=1등 필터링할 걸 넣고 빼면서 요청을 보내면 된다.

pagination은 그냥 settings.py에서 글로벌하게 설정해준걸 썼다.

화면 구현 시 리뷰만 특정 개수로 바꿔야하면 그때 따로 만들어야겠다.


필터링 response에 message를 추가하고 싶을 때:

https://stackoverflow.com/questions/71456029/how-to-return-custom-response-in-listapiview-in-django

 

How to return custom response in ListAPIView in django

I am creating an app where I want to return data in certain way, like in normal ListApiView we get direct all the field as response I dont want that my views.py: class ListFolders(ListAPIView):

stackoverflow.com


이번 프로젝트엔 결국 도움이 되진 않았지만 유용해 보이는 페이지네이션 정보들:

https://auganrymkhan.com/tutorial/implementing-a-custom-configured-pagination-in-django-rest-framework-using-listapiview-and-apiview

 

Implementing a custom pagination in Django Rest Framework (DRF) using ListAPIView and APIView

Implementing a custom pagination in Django Rest Framework (DRF) using ListAPIView and APIView When user-generated content becomes big, it's best practice to paginate returning content. Pagination is used to retrieve a large amount of data in chunks.  In t

auganrymkhan.com

https://stackoverflow.com/questions/61738832/django-rest-pagenumberpagination-object-has-no-attribute-page-error

 

Django Rest 'PageNumberPagination' object has no attribute 'page' error

I have a function based Django API as shown in this sample: @api_view(['GET']) def findData(request): dataId = request.GET['dataId'] page_query_param = 'page' page_size = request.GET['

stackoverflow.com

https://velog.io/@chaeri93/Django-DRF-Pagination-APIView#2-apiview%EC%97%90-pagination_class-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0

 

[Django] DRF-Pagination APIView

지난 포스트에서는 viewset에서의 pagination을 소개했었다. 그러나 프로젝트를 진행하다 보면서 viewset을 사용하지 않고 커스텀하기 쉬운 APIview를 통해서 뷰를 짰다. 따라서 APIview에서는 다르게 pagina

velog.io

https://www.django-rest-framework.org/api-guide/pagination/

 

Pagination - Django REST framework

pagination.py Django provides a few classes that help you manage paginated data – that is, data that’s split across several pages, with “Previous/Next” links. — Django documentation REST framework includes support for customizable pagination styl

www.django-rest-framework.org

https://velog.io/@jcinsh/RetrieveUpdateDestroyView-%EC%9D%B4%ED%95%B4

 

DRF 코드 이해

아래 코드가 왜 작동하는지 이해할려면, get_object 메소드가 어떻게 작동하는지 알아야 함.

velog.io

https://stackoverflow.com/questions/63904087/django-rest-framework-pagination-and-filtering

 

Django Rest Framework pagination and filtering

Hi guys i am trying to make filtering with pagination but i cannot get the result i want. This is my function in views.py. class OyunlarList(generics.ListAPIView): # queryset = Oyunlar.objects....

stackoverflow.com

https://ssungkang.tistory.com/entry/Django-DRF-Pagination

 

[Django] DRF Pagination

실제 서비스의 경우에는 레코드의 개수가 많을 것이고 이 경우 하나의 API 요청으로 모든 레코드를 받는 것은 오랜 시간이 걸리게 됩니다. 따라서 이런 경우 페이지를 나눠서 요청을 해야합니다.

ssungkang.tistory.com

https://stackoverflow.com/questions/38031692/django-how-do-i-include-several-elements-in-pagination

 

Django - How do i include several elements in pagination

This is my first project in django and I've been following several different tutorial, most of which are very useful. I've made a very simple blog as my first app and now I'm expanding it a bit bey...

stackoverflow.com

https://zoejoyuliao.medium.com/django-rest-framework-add-custom-pagination-c758a4f127fa

 

Django REST framework — add Custom Pagination

Django 2.2.6, djangorestframework 3.10.3

zoejoyuliao.medium.com

https://www.sankalpjonna.com/learn-django/pagination-made-easy-with-django-rest-framework

 

Pagination made easy with Django Rest Framework

A tutorial on how to make your APIs paginated with minimal lines of code.

www.sankalpjonna.com


ㅜㅠㅜㅠ 블로그도 out of memory 에러로 쓰던 글 없어지고 vs code도 MemoryError로 실행 중지 ㅜㅠ

컴퓨터를 한번 껐다 켜야겠다.


TourAPI 사이트에 있는 "콘텐츠 캐싱 금지" 문구와 매니저님 경험담으로 DB에 정보 저장을 안하려 했으나 튜터님과 멘토링 결과 저장하기로 바뀌었다.

검색해보니 DB에 저장하는 포스팅이 많이 있었고 튜터님도 "콘텐츠 캐싱 금지" 목적이 원본 데이터 변경 가능성을 없애기 위해서인 것 같다고 하셔서 우리는 상관 없으니 DB 저장 진행.

사이트에서도 전체 다운로드 서비스는 현재 제공하지 않지만 그 이유가 "다운로드 시간 및 서버 과부하 이슈" 때문이었지 정보 사용 제한 이런건 아니었다.

https://api.visitkorea.or.kr/#/cmsQandADetail

 

TourAPI4.0

누구나 쉽게 접근하고 활용 할 수 있는 다국어 관광정보 고객 맞춤형 데이터

api.visitkorea.or.kr


원래 프론트에서 자바스크립트로 api response를 확인해서 여기서 어떻게 관광지 정보를 저장해보려 했으나 .gitignore처럼 node.js나 뭔가 내가 모르는게 더 필요한 것 같다.

어제까지 찾아보고 오늘은 팀장님 방법대로 파이썬으로 도전!

https://www.youtube.com/watch?v=8GH9sinm72c&list=PLOemN3LiCpzlqsFuhr4_vUzkB88N8fhQW&index=4 

https://docs.djangoproject.com/ko/4.2/howto/initial-data/

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com

https://uding.tistory.com/16

 

[Python] JSON 파일(.json) 저장하고 불러오기

[Python] JSON 파일(.json) 저장하고 불러오기 JSON 파일 저장하기 python의 딕셔너리(dictionary) 객체를 생성한다. 이 딕셔너리는 국가 코드를 key로 가지고 국가 코드에 대한 국가의 한글 이름을 value로 가

uding.tistory.com

https://data-soin.tistory.com/54

 

[API] Open API를 활용하여 json 데이터 추출하기(공공데이터 API)

- 공공데이터 Open API 사용하기 1. 공공데이터 포털 회원가입/로그인 (https://www.data.go.kr/) 2. API 사용 요청, 키 발급 3. API 문서(specification) 확인 4. API 테스트 및 개발 - Key 값 확인하기 서비스 호출을

data-soin.tistory.com

https://e-hyun.tistory.com/3

 

[Python] API 로 받아온 JSON 을 파싱하여 DB 에 저장하기

'LINK Cinema' 의 메인화면은 현재 상영중인 영화의 리스트를 보여주는 화면인데, 처음에는 어떻게 구성해야 할 지 난감했다. 영화진흥원의 API 를 쓸까 하다가, 다른 곳의 API 가 Return 값이 더 좋아보

e-hyun.tistory.com


대충 어떻게 하는지 알겠는데 파이썬으로 api에 request 해서 reponse받기를 모르겠어서 검색해봤다.

https://www.daleseo.com/python-requests/ 

 

파이썬에서 requests 라이브러리로 원격 API 호출하기

Engineering Blog by Dale Seo

www.daleseo.com

pip install requests 후 코딩

---> 에러 발생. 에러 메세지가 길다 ㅜㅠ


requests.exceptions.SSLError만 검색해봤다.

https://blog.naver.com/PostView.nhn?blogId=gracehappyworld&logNo=221585937573&categoryNo=32&parentCategoryNo=0 

 

파이썬 에러 requests.exceptions.SSLError

파이썬에서 웹크롤링 연습을 하고자, 일단 페이지 전체 가져오는 부분만 해봤는데.. ---------------------...

blog.naver.com

verify=False를 넣어주면 해결될거라고 했지만 안됨.

https://jemmaa.tistory.com/80

 

크롤링 에러 requests.exceptions.SSLError: HTTPSConnectionPool

하.. 크롤링 돌려놓고 데이터 확인할려고 했는데 3시간쯤 ? 돌리고 나서 보니까 requests.exceptions.SSLError: HTTPSConnectionPool 에러났다고 멈췄다. sleep도 걸고 했는데...ㅠㅠ 새벽작업을 해야했다... 찾아

jemmaa.tistory.com

verify=False로 해결 안되면 pip install pyOpenSSL로 해결될거라고 했지만 안됨.


Max retries exceeded with url 이 에러메세지는 왜 나왔을까 검색.

하루 최대 1000번으로 요청 건수 제한이 있지만 분명 그걸 안 넘겼을텐데 왜 나왔을까?

https://co-da-nam.tistory.com/60

 

파이썬 크롤링할때 생기는 에러 [Connection Error]

파이썬으로 대량의 데이터를 크롤링할때 이런 에러가 생겼었다. HTTPSConnectionPool(host='크롤링 홈페이지 주소', port=443): Max retries exceeded with url: /api/company.json?crtfc_key=ab851319407812ac10d593dcb2fef51d0c944b66&c

co-da-nam.tistory.com

나는 해당되지 않지만 분당 100회 이런 제한도 있다고 한다.

그럴땐 sleep으로 시간 조절

나는 왜 저런 메세지가 떴는지 모르겠다.


결론:

https://scribblinganything.tistory.com/530

 

[Python] 공공데이터포털에서 미세먼지 데이터 가져오기(크롤링, fine dust, API, 파이썬)

목차 이번 시간에는 파이썬을 사용해서 공공데이터 포탈의 API에 접속해서 미세먼지 정보를 가져오는 방법에 대해 알아보겠습니다. API(Application Programming Interface) 란? API란 데이터회사나 웹서버(W

scribblinganything.tistory.com

https가 아니라 http로 요청했어야 하는거였다.


그래서 결국 12개 데이터가 json파일에 잘 저장되는걸 확인한 후 11992개의 데이터 저장을 시도했다.

코드 실행이 길어져서 기다리면서 TIL 작성하던 중 쓰던 글은 out of memory error로 날아가고 vs code에선 MemoryError로 코드 실행 중단 ㅜㅠ

https://spongeb0b.tistory.com/375

 

[Pythone] Python3 Memory Error 발생 - 파이썬 메모리 에러 발생

leetcode에서 문제를 풀고 있는데 이런 에러를 만났다. 메모리 에러라고 한다. 사실 이런 에러는 오늘 처음 만났다. MemoryError 라는게 있었는지도 몰랐는데 오늘 발생하고 나서야 이런게 있다는 것

spongeb0b.tistory.com

컴퓨터를 껐다 켜서 다시 실행해봐야겠다.

'TIL' 카테고리의 다른 글

TIL 061523  (0) 2023.06.15
TIL 061423  (0) 2023.06.15
TIL 061223  (0) 2023.06.12
TIL 060923  (0) 2023.06.09
TIL 060823  (0) 2023.06.08