목록Django (12)
JOOHUUN

데코레이트 작성 def query_debugger(func): @functools.wraps(func) def wrapper(*args, **kwargs): reset_queries() number_of_start_queries = len(connection.queries) start = time.perf_counter() result = func(*args, **kwargs) end = time.perf_counter() number_of_end_queries = len(connection.queries) print(f"-------------------------------------------------------------------") print(f"Function : {func.__name__..
select_related 구하려는 객체가 역참조하는 single object(one-to-one or many-to-one)이거나, 또는 정참조 foreign key 일 때 사용한다. class City(models.Model): name = models.CharField(max_length=200) def __str__(self): return self.name class Person(models.Model): # ... hometown = models.ForeignKey( City, on_delete=models.SET_NULL, blank=True, null=True, ) def __str__(self): return self.hometown.name class Book(models.Model):..
prefetch_related 구하려는 객체가 정참조 multiple objects(many-to-many or one-to-many)이거나, 또는 역참조 Foreign Key일때 사용한다. # Create your models here. from django.db import models class Topping(models.Model): name = models.CharField(max_length=30) class Pizza(models.Model): name = models.CharField(max_length=50) toppings = models.ManyToManyField(Topping) def __str__(self): return "%s (%s)" % ( self.name, ", ".jo..
https://channels.readthedocs.io/en/stable/topics/databases.html @database_sync_to_async Database Access — Channels 3.0.5 documentation Database Access The Django ORM is a synchronous piece of code, and so if you want to access it from asynchronous code you need to do special handling to make sure its connections are closed properly. If you’re using SyncConsumer, or anything based on it channels...

모델 작성하기 # dm/models.py 전체 코드 class HeaderManager(models.Manager): def by_user(self, **kwargs): user = kwargs.get('user') lookup = Q(sender=user)|Q(receiver=user) # lookup결과에 대한 중복 발생시 distinct함수로 중복 제거 result = self.get_queryset().filter(lookup).distinct() return result class Header(BaseModel): sender = models.ForeignKey(User, on_delete=models.CASCADE, null=True, related_name='sender') receiver ..
기존에 하던 프로젝트에서 진행 pip install channels 후 setting.py에 앱 추가 django-admin start app dm: dm 앱 생성 # project/settings.py INSTALLED_APPS = [ 'channels' # 패키지 설치후 엡에 등록하기 'user', 'article', 'dm', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'corsheaders', 'rest_framework', 'rest_framework_..

https://channels.readthedocs.io/en/latest/tutorial/part_2.html(공식문서) Tutorial Part 2: Implement a Chat Server — Channels 3.0.5 documentation This tutorial begins where Tutorial 1 left off. We’ll get the room page working so that you can chat with yourself and others in the same room. Write your first consumer When Django accepts an HTTP request, it consults the root URLconf to lookup a view f ch..
1. product/views.py def put(self, request, obj_id): # obj_id로 상품식별함 product = Product.objects.get(id=obj_id) # pk=obj_id로 겟함 product_serializer = ProductSerializer(product ,data=request.data, partial=True) if product_serializer.is_valid(): product_serializer.save() return Response(product_serializer.data, status=status.HTTP_200_OK) return Response(product_serializer.errors, status=status.HTTP_40..

1. blog / models.py class Article(models.Model): user = models.ForeignKey('user.User', verbose_name="작성자", on_delete=models.CASCADE) title = models.CharField("제목", max_length=50) category = models.ManyToManyField(Category, verbose_name="카테고리") contents = models.TextField("본문") start_date = models.DateTimeField("노출 시작일", auto_now_add=True) end_date = models.DateTimeField("노출 종료일", null=True, blan..

# 유저 모델 class User(AbstractBaseUser): username = models.CharField("사용자 계정", max_length=50, unique=True) password = models.CharField("비밀번호", max_length=128) email = models.EmailField("이메일 주소", max_length=100) fullname = models.CharField("이름", max_length=20) join_date = models.DateField("가입일", auto_now_add=True) is_active = models.BooleanField(default=True) is_admin = models.BooleanField(default=F..