반응형

Today I Learned/django 27

장고 (django) 캐시 사용하기 (memcached)

이전글 참고: 2023.08.30 - 메모리 계층 구조와 In-Memory DB (Redis) 특징 메모리 계층 구조와 In-Memory DB (Redis) 특징 데이터역량 키우는 하루하루의 기록 hanawithdata.tistory.com 캐시에 대해서 궁금하다면 위 글을 참고해보고 오는것을 추천합니다. 캐시 사용하는 이유 웹페이지를 동적으로 구성하면, 실시간으로 database에서 값을 불러오고 계산해야하는 경우가 있는데 트래픽이 많은 웹사이트같은 경우 처리비용이 많이 듭니다. 이때 자주 사용되는 계산 값은 db에 가지 않고 빠르게 불러오기 위해 캐시에 저장해두고 사용하면 응답속도나 비용을 효율화 할 수 있습니다. 장고에서 HTTP요청시 캐시 프레임워크가 동작하는 순서 1. 캐시에서 요청된 데이터를 ..

장고 (django) 클래스 기반 뷰에서 믹스인 사용하기 (mixin)

공식 문서: https://docs.djangoproject.com/en/4.1/topics/class-based-views/mixins/ Mixin 역할 재사용 가능한 기능을 클래스에 추가하여 코드를 모듈화 하고 뷰, 모델 등의 클래스에서 코드 중복을 줄이는데 사용된다. 클래스 기반 뷰에서 사용되며, 자주 사용되는 Mixin으로는 'LoginRequireMixin', 'PermissionRequireMixin', 'FormMixin' 등이 있다. 이러한 Mixin 클래스를 사용하여 로그인 요구사항, 권한 확인, 폼 처리등의 기능을 뷰에 추가할 수 있다. 사용 예시 'LoginRequireMixin' from django.contrib.auth.mixins import LoginRequiredMixin ..

장고 (django) get_queryset() 역할

get_queryset() 데이터베이스에서 조회된 결과를 반환하는 쿼리셋을 커스텀하는데 사용되는 메서드로 보통 클래스 기반 뷰에서 사용된다. 주로 ListView에서 보여질 리스트 항목을 필터링 또는 정렬하는데 사용된다. 예를들어 todo list를 출력할 때 로그인한 유저의 목록만 가져온다던지, 상품 관리 리스트에서 로그인한 판매자의 품목만 가져온다던지 하는 등에 유용하게 사용 된다. from django.views.generic import ListView from .model import Todo class TodoListView(ListView): model = Todo def get_queryset(self): qs = super().get_queryset() #원하는 쿼리셋 로직을 작성하여 반..

장고 (django) model multiple select choices (항목 여러개 선택하는 모델 만들기)

모델에서 선택지 필드를 만들 수 있는데, 단일 선택이 아닌 다중 선택이 가능하도록 변경한 내용을 남겨두려고 한다. https://pypi.org/project/django-multiselectfield/ django-multiselectfield Django multiple select field pypi.org 파이썬의 django-multiselectfield 패키지를 사용했다. [변경 전 코드] from django.contrib.auth.models import User from django.db import models # Create your models here. class Routine(models.Model): days_of_week = ( (0, 'Mon'), (1, 'Tue'), (2..

(장고) ORM tutorial #4. ManyToManyField()

https://www.pythontutorial.net/django-tutorial/django-many-to-many/ Django Many-to-Many Relationships By Practical Examples In this tutorial, you'll learn how to use ManyToManyField to model a Django Many-to-Many relationship. www.pythontutorial.net 한 명의 직원은 다양한 보상체계를 얻을 수 있고 , 보상체계에도 여러 직원이 포함될 수 있는 N:N 관계이다. 이때 각각의 테이블은 직접적으로 연결되지 않고, 중간에 연결해주는 테이블(hr_employee_compensations) 을 거친다. 1. Compensa..

(장고) ORM tutorial #3. OneToMany, ForeignKey()

https://www.pythontutorial.net/django-tutorial/django-one-to-many/ Django One-To-Many Relationship In this tutorial, you'll learn about one-to-many relationships in Django and how to use the ForeignKey to model them. www.pythontutorial.net 1:N 관계는 ForeignKey() 함수로 정의해준다. 부서 모델을 추가할 건데, 한 부서당 여러 직원을 가질 수 있으므로 부서:직원 = 1:N 관계를 가진다. 이 때, N인 테이블에 ForeignKey를 지정해주면 된다. (상대 테이블에는 정의 X) 1. Department 모델..

(장고) ORM tutorial #2. OneToOneField()

https://www.pythontutorial.net/django-tutorial/django-one-to-one/ Django One-To-One Relationship By Practical Examples In this tutorial, you'll learn about Django one-to-one relationship and how it works under the hood. www.pythontutorial.net 1:1 매칭되는 테이블 연결 만들어보기 1. Contact 모델 생성 후 Employee 모델에 추가 Employee 한명당 하나씩 연결될 Contact 모델을 만들어서 추가한다. OneToOneField(Model_Class_name, 조건 ) on_delete -> Empl..

(장고) ORM tutorial #1. all(), get() , filter(), save(), delete()

https://www.pythontutorial.net/django-tutorial/django-orm/ Django ORM In this tutorial, you'll learn about Django ORM and how to use Django ORM API to interact with relational databases. www.pythontutorial.net 장고의 ORM을 잘 이해하기 위해 튜토리얼 진행 1. postgreSql 사용을 위한 패키지 설치 및 설정 pip install psycopg2 settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'hr', 'USER': 'po..

장고 (django) - LoginView, LogoutView, LoginRequireMixin 설정하기

까다로운 login, logout을 장고가 제공해주는 class 를 사용해서 아주아주 간단하게 구현할 수 있다. 1. LoginView task_list.html {% if request.user.is_authenticated %} {{request.user}} Logout {% else %} Login {%endif%} 왼쪽 화면 상단에 있는 Login 링크를 구현한 코드이다. 유저가 로그인 된 상태이면 logout , 로그아웃된 상태이면 login 코드를 노출한다. views.py 장고에서 제공하는 LoginView를 받아서 로그인 클래스 구현 from django.contrib.auth.views import LoginView class CustomLoginView(LoginView): templa..

장고 generic editing views , createView

https://docs.djangoproject.com/en/4.2/ref/class-based-views/generic-editing/ Django The web framework for perfectionists with deadlines. docs.djangoproject.com 장고 공식 페이지 참고 CreateView 장고 제네릭의 edit 뷰 중 하나로 데이터를 입력하는 폼을 아주 간단하게 만들 수 있다. to do list 를 추가하는 폼을 예시로 만들어보자 models.py from django.db import models from django.contrib.auth.models import User # Create your models here. class Task(models.Mode..

반응형