Django
-
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 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..
-
Django template tag if 문에서 변수끼리 비교Django 2019. 7. 11. 11:33
장고 template 에서 변수끼리 값이 맞는지 비교해야 되는 경우가 있다. 예를 들어 {% if request.GET.변수명 == user_id %} 처럼 옵션 안에서 두 변수끼리 비교를 하는 경우 일반적으로 request.GET.변수명 과 비교할때는 " " 처럼 문자열인 경우에 맞는지 체크가 되는것을 알 수 있다. 그런데, {% if request.GET.변수명 == "1" %} 이런식으로 지정되는 경우는 문제가 없지만 {% if request.GET.변수명 == user_id %} 처럼 변수명 으로 비교를 하게 될때 user_id 가 int 형인 경우는 같은 값인데도 불구하고 request.GET.변수명은 string형, user_id 가 int 형으로 판정되어 체크를 하지 못하게 된다. 그래서 일..
-
Mac에서 Django 와 MySql 연결하기Django 2016. 11. 22. 23:11
mac에서 처음으로 Django 를 써서 mysql 를 연결하려고 하니, 서치를 해봐도 생각보다 쉽게 되지가 않았다... 다른 여러 글을 찾아보다 https://dev.mysql.com/downloads/connector/python/2.1.html 여기서 mysql-connector-python-2.1.4-osx10.11.dmg 파일을 다운 받아서 설치를 한 후, Django 프로젝트에서 settings.py 에서 데이터베이스 부분을 DATABASES = { 'default': { # 'ENGINE': 'django.db.backends.sqlite3', 'ENGINE': 'mysql.connector.django', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),..