본문 바로가기

728x90
반응형

Python/Django

(37)
Django Template, render_to_string # backend에서 data 받기 #render_to_string #loader Ajax를 통해서 HTTP통신을 하는 경우 backend에 request를 보내고 거기에 대한 frontend에서 response를 받고, reponse 안에 data를 담아올 수 있습니다. 받아온 data를 화면 전환 없이 특정 html 부분만 바꿀때 Ajax를 많이 활용합니다. 경우에 따라서는 화면 전체를 다른 페이지로 전환을 하면서, data를 backend에서 받아오고 싶을 수 있습니다. Django template의 경우 context에 담아서 render해 줄 경우 html에 바로 뿌려줄 수 있지만, 데이터를 받아서 데이터 자체를 활용하기가 수월하지 않습니다. 즉, 원하는 것은 다음과 같은 상황입니다. 1) 페이지 전환을 특정 html로 완전히 바꿔주고 2) context도 활용하면서 3) a..
이미지 업로드: Django ImageField # Ajax Django 파일이 저장될 디렉토리와, 그 디렉토리를 가리킬 URL 설정 settings.py import os MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' urls.py from django.conf import settings from django.conf.urls.static import static urlpatterns = [ ... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) Pillow 설치 pip install pillow pillow를 설치 하지 않으면 아래 모델 생성에서 ImageField를 사용하지 못하는 에러가 발생 model 생성 fro..
Django Template filter: {% with %} Django template에서 필터와 필터를 중복해서 써야되는 경우들이 있다. 예를 들어서 mathfilters를 이용해서 연산을 하고, 거기에 특정 리스트의 길이를 더하고 싶을때 |length 필터를 더해줘야 하는데, 이럴 때 원하는 대로 작동을 안한다. 그때 {% with %} 로 원하는 값을 먼저 뽑아와서 용해주면 된다 example 1) {{commits.number|mul:3|add:commits|length}} # X {% with commits|length as commits_length %} # O {{commits.number|mul:3|add:commits_length}} {% endwith %} example2) {% with name|add:"Kim" as re_name %} {%..
STATIC_ROOT vs STATICFILES_DIRS Django에서는 static 파일과 관련한 설정에는 5가지가 있고 STATIC_URL STATIC_ROOT STATICFILES_DIRS STATICFILES_STORAGE STATICFILES_FINDERS 그 중 아래 3가지가 일반적으로 많이 사용이 됩니다. STATIC_URL STATIC_ROOT STATICFILES_DIRS STATIC_URL의 경우, static 경로에 접근하기 위해 설정해주는 url이라 개념적으로 헷갈릴게 거의 없는데, STATIC_ROOT와 STATICFILES_DIRS 는 둘다 static 파일들을 다룬다는 점에서 헷갈리게 합니다. 결론적으로만 말하면 STATIC_ROOT는 배포 단계(deployment)에서 필요하고 STATICFILES_DIRS는 개발 단계(devel..
Django: Database data dump # json으로 데이터 백업, 복구 Django에서 DB를 옮길 때 편하게 사용할 수 있는 기능입니다. * dumpdata data를 json형태로 담아둡니다. 1) 전체 테이블 dump python manage.py dumpdata > data.json 2) 일부 테이블 or 그 중의 일부 모델만 python manage.py dumpdata app_label1 app_label2.ModelName > data.json 3) --format python manage.py dumpdata app_label --format xml > data.xml # default는 json * loaddata python manage.py loaddata data.json json, 또는 xml, 그리고 yaml 도 가능합니다. 단, yaml은 PyYA..
ORM queries: .aggregate() Count, Sum, Avg, Max, Min, Variance(분산), StdDev(표준편차) examples from django.db.models import Sum, Count, Avg, Min, Max, StdDev, Variance def shopw_view(request): total_fruits = Fruits.objects.aggregate(Count('id')) avg_fruits = Fruits.objects.aggregate(Avg('name')) min_max_prices = Fruits.objects.aggregate(Min('price'), Max('price')) price_stddev = Fruits.objects.aggregate(StdDev('price')) price_..
values_list(), values() method in Django Django의 QuerySet API 중에 values_list() 와 values()가 있습니다. values_list()는 filter method 등으로 불러온 QuerySet 결과값들을 tupple이 담긴 list 형태로 바로 만들어주고 values()는 QuerySet 결과값들을 dictionary가 담긴 list 형태로 바로 만들어줍니다. Django 프로젝트를 만들고 다음과 같이 예제를 살펴보겠습니다. # models.py from django.db import models class Fruits(models.Model): name = models.CharField(max_length=30) price = models.PositiveIntegerField() grade = models.Pos..
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. # app.models import 할 때 Celery 실습 중에 아래 코드를 작성하고 Script를 실행하니 다음과 같은 에러 발생 from django_celery_beat.models import PeriodicTask django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. ChatGPT) It looks like you are trying to use Django before the application registry has been fully initialized. This can happen if you are trying to access models before the app containing them has been fully loaded. To fix this..

728x90
반응형