django
-
Github Action으로 django test 하기(CI)Django testing 2021. 6. 4. 12:37
github 으로 들어간 후, 본인의 프로젝트로 들어가서 아래 이미지처럼 'Actions'를 선택합니다. 들어간 후, 처음엔 Django 에 관한 부분이 없지만 Continuous integration workflows 부분 중 'More continuos integration workflows' conn = _connect(dsn, connection_factory=connection_factory, **kwasync) E psycopg2.OperationalError: could not connect to server: Connection refused E Is the server running on host "localhost" (::1) and accepting E TCP/IP connection..
-
Django 에서 pytest 사용하기Django 2021. 6. 3. 17:33
1. pytest 설치 지난 시간 이어서 pytest 를 사용하기 위해 새로 설치한다. pip install pytest-django pytest-django를 설치하면 자동적으로 최신버전의 pytest도 같이 설치된다. pytest-django는 pytest의 플러그인 시스템을 사용하고 특별한 설정 없이 설치 후에 바로 사용 가능하다. 설치 이후, pytest 란 명령어로 실행해보면 pytest 다음과 같이 django에서 설정을 해주지 않아서 오류가 발생하고 있는것을 확인된다. E django.core.exceptions.ImproperlyConfigured: Requested settings, but settings are not configured. You must either define the..
-
django 테스트DB 없이 유닛 테스트하기Django testing 2021. 5. 31. 15:35
python manage.py test를 진행하면 다음과 같이 생각하고는 다르게 테스트 DB를 생성하고, 테스트 DB를 삭제하는 것을 확인할 수 있다. 이렇게 매번 테스트 DB를 생성하고, 삭제를 하게 되면 새로운 데이터에 한해서는 테스트가 가능하지만, 기존 DB에 있는 데이터를 테스트하기 어려운 문제점이 있다. django를 만들면서 생성되는 기본 앱, 여기서는 django_testing 라는 폴더에 test_runner.py 와 settings_test.py 두 파일을 생성한다. test_runner.py from django.test.runner import DiscoverRunner class TestRunner(DiscoverRunner): def setup_databases(self, **kw..
-
Testing 의 시작과 종류Django testing 2021. 5. 31. 11:48
1. Testing의 시작 Django 개발을 진행하다 보면 분명히 직접 확인해서 수동으로 테스트를 진행했음에도, 예기치 못한 버그가 발견되거나 배포에 대한 확신을 가지기 어려운 경우가 있다. 이러한 것을 미연에 방지하기 위해 testing 을 효과적으로 하기 위해 테스트 코드를 작성하고, 다른 사람이 특정 기능에 대해 이해를 할 때도 테스트 코드를 통해 어떤식으로 동작하는지 파악하기 위해 시작하게 되었다. 2. 일반적인 Testing의 종류 Unit tests (유닛 테스트) 독립적인 콤포넌트의 (성능이 아닌) 기능적인 동작을 검증한다. 흔히 class나 function 레벨로 수행한다. Regression tests ( 버그수정 확인 테스트 ) 기존에 보고된 버그들이 재발하는지 테스트한다. 각 테스트..
-
Django ModelForm 에서 create, update 개발Django 2021. 4. 15. 15:56
create 하는 경우: form = ObjectForm(request.POST) # print('form:', form) if form.is_valid(): form.save() return redirect(reverse('~~~~', kwargs={})) else: # print(form) return redirect(reverse('~~~~', kwargs={})) update 하는 경우: object_model = ObjectModel.objects.get(id=pk) # update 하는 경우엔 instance 에 해당 모델 대입 form = ObjectForm(request.POST, instance=object_model) # 수정하기 def post(self, request, pk): re..
-
Django CharField 에서 ForeignKey 로 변경Django 2021. 4. 14. 11:16
기존 모델에서 category = models.CharField('카테고리', max_length=100) 이런 칼럼이 있는 경우, 바로 ForeignKey 로 변경하게 되면 django.db.utils.DataError: invalid input syntax for integer: " " 이러한 에러를 마주하게 된다. 바로 ForeignKey로 변경하면 데이터 보전도 하기 어렵기 때문에 다음과 같은 방법으로 변경해보았습니다. 우선, 다음처럼 CategoryModel 을 생성합니다. class CategoryModel(TimeStampedModel): name = models.CharField('카테고리 이름', max_length=55) def __str__(self): return self.name ..
-
Django 각 일자별로 특정 필드 sum 하기Django 2020. 6. 16. 07:36
특정 기간 동안 각 날짜마다 특정 수치를 Sum 해야 되는 경우, 아래 처럼 작성하면 동작이 될 줄 알았습니다. DailyCampaign.objects.filter( advertiser_id=advertiser_id, date__range=[from_date, to_date], ).values('date') \ .annotate(installs=Sum('installs')) \ 하지만 위처럼 된 경우, 각 일자가 group by되서 수치가 나오는게 아니라 그냥 해당 디비 row로 죽 나오는 것이었습니다. 한참 헤매다 방법을 찾은 것이 아래 소스처럼 하는 것이었습니다. DailyCampaign.objects.filter( advertiser_id=advertiser_id, date__range=[from_..
-
Django에서 WhiteNoise 사용하기Django 2019. 7. 11. 17:49
Django 에서 DEBUG = False 로 하게 되면 기존에 static 파일로 쓰던 것들이 모두 경로를 못찾게 된다. 그런때에 WhiteNoise 를 설치해 사용하면 해당 문제를 해결 할 수 있다. WhiteNoise는 static파일들을 collectstatics 명령수행시 지정경로에 파일들을 모아주는 역할을 한다. http://whitenoise.evans.io/en/stable/django.html Using WhiteNoise with Django — WhiteNoise 4.1.2 documentation This guide walks you through setting up a Django project with WhiteNoise. In most cases it shouldn’t take..