💻 프로그래밍/Django
-
Django, Nginx CORS 설정💻 프로그래밍/Django 2021. 1. 17. 21:51
친구와 토이프로젝트를 진행하던 도중 CORS문제를 만났다. Web에서 서버로 API를 호출했는데 아래와 같은 오류를 만났다. Access to XMLHttpRequest at '{target url}' from origin '{current url}' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. 아마 웹개발을 하는 사람들이라면 종종 마주친 오류였을 것이다. 간단히 말하자면 CORS 정책을 지키지 않았기 때문에 api호출이 금지 되었다는 것이다. 오류를 보면 Access-Control-Allow-Origin 가 헤더에 업기 때문에 CORS 정책에 의해 B..
-
update_or_create()하는데 갑자기 Dead Lock 너는 왜나오냐?! (feat. transaction)💻 프로그래밍/Django 2020. 10. 26. 20:01
안녕하세요! 운동하는 개발자 제이입니다! 오늘은 Dead Lock과 Transaction에 대해서 알아보려고 합니다! 회사에서 종종 위 이미지와 같은 센트리 리포팅을 볼 수 있었는데, Deadlock (교착상태)에 대해서 개념은 알고 있었지만 실제로 코드상에서 왜 Deadlock이 나는지 정확한 이유를 알진 못했습니다. 시니어 개발자분께서 transacion log를 보여주시면서 설명은 해주셨는데, 그냥 그렇구나 하고 넘어갔던 것 같아요(이러면 안 됩니다 여러분 ㅎㅎ) 최근에 DB에 대해서 좀 더 관심이 생겨서 이 Deadlock에 대해서 실제 django orm을 보면서 알아보려고 해요. 1. Dead-lock 그리고 Transaction 일단 간단히 Deadlock이 뭔지 transaction이 뭔지..
-
[개념] Django는 Web Server가 아니라구요!!💻 프로그래밍/Django 2020. 8. 10. 19:38
안녕하세요! 운동하는 개발자 Jay입니다. 오늘은 Django, Nginx, WSGI, gunicorn의 개념적인 내용을 간단히 다뤄보려고 합니다. 사실 웹 개발자로서 처음 커리어를 시작했을때, 많이 헷갈렸던 부분이었습니다. "우리 회사 웹 서버는 Django를 사용해!" 개발자 친구들을 만나면 이렇게 설명 했던 것 같습니다.ㅎㅎㅎ 근데 사실 정확히 따지자면, 틀린 말이죠! (창피함😱) 아마, 저 처럼 처음 웹 개발자로서 커리어를 시작하시는 분들도 이런 개념에 헷갈리셨을 수도 있을 것 같아요! (나만 그런 건가 hoxy?) 1. Django의 역할이 그래서 정확히 뭔데?? 네! 그래서 Django의 역할은 도대체 뭘까요? 이미 다들 알고 계신텐데 Django는 Web Server가 아니라 Web Appl..
-
Django 에서 Celery로 비동기 worker 실행하기💻 프로그래밍/Django 2019. 12. 23. 00:06
안녕하세요! 운동하는 개발자 Jay 입니다. 오늘은 Celery라는 비동기 워커에 대해 알아 보겠습니다. 1. What is Celery ( 먹는 샐러리 아니죠~) 간단히 말하면 Django에서 비동기 처리를 위한 방법으로서 사용하는 것이 Celery 입니다. 우리가 비동기로 처리하고 싶은 작업들을 queue에 저장하면, Celery는 그 작업들을 가져와 처리합니다. celery를 실행하는데 있어 필요한 것이, 앞서 말한 queue 입니다. celery에는 message brocker라고 합니다. 메세지를 주고 받을 수 있는 서비스들입니다. 메세지 브로커 종류에는 RabbitMQ, Redis 등이 있습니다. 아주 편하게도 docker에 RabbitMQ, Redis 이미지가 있기때문에, 저는 docker를..
-
[Pytest] TDD를 해야하는 이유 (django TDD 적용하기)💻 프로그래밍/Django 2019. 12. 8. 21:54
안녕하세요! 운동하는 개발자 Jay입니다. 오늘은 TDD(Test Driven Development)를 해야 하는 이유와, Django api를 만들어서 간단하게 TDD를 적용해보도록 하겠습니다. 1. What is TDD(Test Driven Development) 먼저 TDD가 뭔지에 대해서 간략하게나마 알아보겠습니다. 사실 처음 Test Driven Development라고 TDD를 단어로만 접했을 때는 단순히 테스트 케이스를 짜서 로직에 대한 테스트를 실행하는 걸로만 알았습니다. (물론 이것도 넓게는 TDD의 범위에 속한다고 생각합니다.) 그래서 정확히 TDD의 정의를 찾아봤습니다. - 테스트 주도 개발(Test-driven development TDD): 매우 짧은 개발 사이클을 반복하는 소프트..
-
쿼리를 줄이자! select_related vs prefetch_related💻 프로그래밍/Django 2019. 7. 21. 22:48
안녕하세요:D! 운동하는 개발자 Jay입니다. 회사에서 코딩을 하면서 가장 많이 했던 실수(지금도 하지만..) 중 하나가 불필요한 쿼리를 보내는 것이었습니다. 사실 SQL문에 대해 잘 알지도 못한 상태이기도 했고, 쿼리 보내는 코드를 잘 못 사용할 경우 서버가 다운될 수 도 있다는 생각 조차 하지 못했기 때문에...ㅎㅎ(로컬에서만 테스트하면 그럴 일이 없기 때문에..) 무튼 쿼리를 잘못 짜면, 반복적인 쿼리로 인하여 서버가 다운이 될 수 도 있습니다. 오늘은 Django ORM 사용할 때 Query 개수를 줄일 수 있는 방법 중 select_relaed, prefetch_related에 대해서 간단히 알아보도록 하겠습니다. * 쿼리셋과 캐싱 (알고 가야 할 내용) 각각의 쿼리셋은 DB에 Access 할 ..
-
validation 체크 노가다를 줄여주는 Django form, modelform, formset 사용💻 프로그래밍/Django 2019. 4. 27. 19:21
안녕하세요! 코딩하는 JAY입니다. 오랜만의 포스팅이네요.. 항상 오랜만 ㅋㅋㅋ 오늘은 제가 회사 프로젝트를 하면서 진짜 고생 많이 하고, 배우게 돼서 정말 다행인 Form, ModelForm, Formset에 대해서 설명하겠습니다. 일단 각각의 정의(?)를 알아보겠습니다. 1. Form(in HTML): HTML폼은 사용자와 웹사이트 또는 어플리케이션이 서로 상호 작용하는 것 중 중요한 기술 중에 하나입니다. form을 사용하여 사용자는 웹사이트에서 웹서버로 데이터를 전송할 수 있습니다.(submit) 일반적으로 데이터는 웹 서버로 전송되지만 웹페이지가 데이터를 사용하기 위하여 사용할 수 도 있습니다. - 관련 참고글 : http://www.nextree.co.kr/p8428/ HTML : 폼(form..
-
Django REST Framework API 문서 자동화 하기(feat.drf-yasg)💻 프로그래밍/Django 2018. 12. 31. 19:10
안녕하세요! Jay입니다:D 이번 포스팅은 DRF(Django REST Framework) API 문서를 만들어 보겠습니다.물론 자동 으로요!! 사실 이번 포스팅은 회사에서 API문서를 수정하거나, 다른 웹페이지로 이동시키는 문제때문에 이것 저것 찾아 보다가 찾아낸 방법입니다. API 한두개야 그냥 직접 타이핑 할 수 있지만, 아주 방대한 API의 경우 매번 새로 타이핑하는건...정말 노가다죠 ㅎㅎ아주 친절하게도 우리에게는 오픈소스라는 희망이 있었고, 다양한 DRF API 문서 자동화 패키지들이 존재했습니다. 예를들어 Django REST Swagger, Apiary, RAML 등이 있는데, 이번 포스팅에서 사용할 패키지는drf-yasg 입니다.참고자료 : https://drf-yasg.readthedo..