[DRF] Django REST Framework 1 View

Django, DRF에서도 함수 기반 뷰(FBV), 클래스 기반 뷰(CBV)로 개발할 수 있다. 뷰 작성할 떄의 함수/클래스 차이일 뿐 기능 차이는 없다. FBV/CBV 공통적으로 사용하는 APIView wrapper가 있는데, 요청에 유형에 따라 동작할 수 있게 도와준다. 뷰에서 Request 인스턴스를 수신하고, 해당 메소드를 인자로 전달해서 해당 메소드에 맞는 로직이 실행되도록 도오하준다. @api_view는 클래스형 뷰의 as_view()처럼 여러가지 메소드를 처리하도록 도와준다고 보면 된다. FBV CBV 데코레이터로 작성 @api_view 클래스를 상속하는 형태 Request와 Response DRF에서 HTTP 요청 객체로 HttpRequest 객체를 확장한 Request 객체를 사용한다....

January 11, 2024 · 3 min · Nirvana

[DRF] Django REST Framework 0

Django REST Framework 란 RESTful이란 Representational State Transfer의 줄임말이다. 먼저 REST에 대해서 소개를 하자면, http의 url과 http method(GET, POST, PUT, DELETE)를 사용해서 API 가독성을 높인 구조화된 시스템 아키텍쳐(framework)라고 생각하면 된다. 하나의 URL로 우리는 최소 4가지의 HTTP method를 전송할 수 있다. 쉽게 말하면 자원을 이름 등으로 구분해서 자원에 대해서 여러 정보를 주고 받는 것 자체를 REST라고 생각하면 된다. REST는 이전에 한번 학습 요약 차원에서 정리했다. DRF(Django REST Framework) 본론으로 들어와서 DRF(Django REST Framework)란 Django 안에서 RESTful API 서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리다....

January 10, 2024 · 2 min · Nirvana

[Django] NoReverseMatch 에러 대처

Django는 Debug=True로 해놓으면 에러메시지가 친철하다. NoReverseMatch at URL 주소 : 해당 URL 주소로 접소하는 과정에 에러 발생 `Reverse for ‘함수 이름’ : 해당 URL 주소에서, 문제를 발생시키는 함수 /Photo/new 에서 데이터를 집어 넣는 과정에서 문제가 생겼는데, html 파일을 봐도 헤메고 있었는데, ph..??? 함수를 보니 진짜 ph로 리다이렉트 하고 있었다. def photo_post(request): if request.method == "POST": form = PhotoForm(request.POST) if form.is_valid(): photo = form.save(commit=False) photo.save() return redirect('photo_detail', ph=photo.pk) else: form = PhotoForm() return render(request, 'photo/photo_post....

January 7, 2024 · 1 min

[Django] makemigrations와 migrate 차이

Django 공식 문서에 보면 이렇게 나와있다. migrate은 마이그레이션을 반영하거나 반영하지 않기 위해 사용합니다. > 원문 : migrate, which is responsible for applying and unapplying migrations. makemigrations는 모델을 변경한 것에 기반한 새로운 마이그레이션을 만들 때 사용합니다. > 원문 : makemigrations, which is responsible for creating new migrations based on the changes you have made to your models. sqlmigrate은 마이그레이션을 위한 SQL 구문을 보기 위해 사용합니다. > 원문 : sqlmigrate, which displays the SQL statements for a migration showmigrations는 프로젝트 전체의 마이그레이션과 각각의 상태를 나열하기 위해 사용합니다....

January 5, 2024 · 1 min · initNirvana

클린 코드를 위한 테스트 주도 개발 오류편

Deprecation 에러 처리 기존 예제에는 firefox로 처리하라고 되어있으나 따로 설치하기도 그렇고 크롬으로 테스트하는게 마음이 편하니 크롬으로 설치하게끔 처리하였다. 크롬드라이버 버전 다운로드는 사용하고 있는 크롬 버전에 다음 URL에서 받자. https://chromedriver.chromium.org/downloads 물론 크롬드라이버를 다운받아 테스트하는 방법도 있으나 또 설치되어있는 크롬버전과 맞춰서 크롬드라이버를 다운로드 받아야하는 삽질이 있으니, 아래의 방법을 이용하도록 하자. $ pip install webdriver-manager webdriver-manager 패키지를 설치 from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager chrome_options = webdriver....

June 26, 2022 · 4 min · Nirvana kim

클린 코드를 위한 테스트 주도 개발 기초편

TDD with django for 5.0 2022년 와서 이 책을 볼려고 한다면 파이썬 3.7버전 혹은 3.8버전까지 사용하길 바란다. 3.9버전부터는 파이썬 기본라이브러리인 ’collection’이 바뀌는 변경점이 있기 때문이다. 2023년 말에 다시 확인해보니 해당 문제가 해결된것으로 보인다. 5.0버전에서도 문제없이 실행된다. 게다가 예전과 달리 맥북에서 사용했다면 ’brew’로 쉽게 설치했던것을 윈도우에서 설치하려니 삽질 경험 +1을 했다. 해당 내용은 다른 글에 적었다. 앞에 설명한 것처럼 1.6버전으로 작성되있는 예제 코드를 참고하여 최신버전(5.0)으로 재작성 및 트러블 슈팅해본다....

May 30, 2022 · 4 min · Nirvana kim