일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- django ORM
- API
- HTML
- 알고리즘 연습
- java
- Django
- Baekjoon
- Algorithm
- es6
- form
- 알고리즘 풀이
- CSS
- javascript
- 알고리즘
- PYTHON
- web
- DRF
- 파이썬
- 백준
- 알고리즘 문제
- js
- c++
- MAC
- Git
- 장고
- django rest framework
- react
- AWS
- django widget
- 파이썬 알고리즘
- Today
- Total
목록웹프로그래밍/Django (81)
수학과의 좌충우돌 프로그래밍
Spanning multi-valued relationships 에 대해서 설명하기 전에 어쩌다가 해당 문제에 부딪혔는지 설명을 우선적으로 하도록 하겠습니다. 배경 설명 이번 예시에서 사용할 모델은 3개입니다. 실제로는 필드 수가 훨씬 많지만 원활한 이해를 이해 필드를 많이 줄여 적절한 예시를 만들어 보았습니다. class Sutra(models.Model): name_kor = models.CharField(max_length=255, null=True, blank=True) description = models.TextField(blank=True, null=True) def __str__(self): return self.name_kor class Evaluation(models.Model): RE..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 1. 질의 횟수 확인 Django 단위 테스트 클래스에 assertNumQueries() 메서드를 사용하여 데이터베이스에 발생하는 질의 횟수를 검증할 수 있습니다. def test_number_of_queries(self): User.objects.create(username='testuser1') # 위 ORM 명령으로 질의 횟수가 1 번 일어나야 한다. self.assertNumQueries(1) User.objects.filter(username='testuser').update(username='test1user') # 질의 횟수가 한 번 증가해야 한..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 1. 자기 참조 외래 키 자기 자신을 참조하는 자기 참조 외래 키를 정의할 수 있습니다. class Employee(models.Model): manager = models.ForeignKey('self', on_delete=models.CASCADE) class Employee(models.Model): manager = models.ForeignKey("Employee", on_delete=models.CASCADE) 2. 기존 DB를 django Model로 옮기기 Django에서 models.py를 통해 DB를 생성할 수 도 있지만 경우에 따라 기존의..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 1. QuerySet 정렬 Django에서는 order_by 메서드를 사용하여 QuerySet을 정렬할 수 있습니다. 여러 필드에 대해서도 가능하며 - 를 사용하여 내림차순으로 정렬도 가능합니다. Post.objects.all().order_by('created_at', '-updated_at') SELECT `post_post`.`id`, `post_post`.`user_id`, `post_post`.`title`, `post_post`.`content`, `post_post`.`created_at`, `post_post`.`updated_at` FROM ..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 1. 여러 개의 행을 한 번에 생성하기 여러 개의 데이터를 저장하기 위해서 create() 함수를 여러 번 쓰는 것은 비효율적입니다. DB와 연결 후 저장을 하고 연결을 끊게 되는데 쿼리가 여러 개면 이 과정을 무의미하게 반복됩니다. 따라서 저장할 데이터가 많을 경우 한 번에 저장하는게 좋습니다. Django에서는 bulk_create 를 제공해줍니다. 이 함수는 아직 저장되지 않은 객체를 담은 리스트를 인자로 받습니다. categories = [Category(name='a'), Category(name='b')] category = Category.obj..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 14. Q 객체 앞서서 Q 객체에 대해 다루었다시피 이를 통해 SQL 질의의 WHERE 절을 수행할 수 있습니다. queryset = User.objects.filter( Q(first_name__startswith='R') & ~Q(last_name__startswith='Z') ) SELECT "auth_user"."id", "auth_user"."password", "auth_user"."first_name", "auth_user"."last_name" FROM "auth_user" WHERE ("auth_user"."first_name"::text L..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 10. JOIN SQL에서는 JOIN문을 이용해 동일한 값을 가진 열을 기준으로 두 테이블을 결합할 수 있습니다. django에서도 JOIN을 할 수 있는 방법이 존재합니다. select_related 모든 Post를 가져오는 간단한 쿼리를 살펴봅시다. post_all = Post.objects.all() 이에 대한 SQL 질의문입니다. 놀랍게도 Post에 대한 질의문과 Post와 OneToOne으로 연결되어 있는 User에 대한 질의가 함께 이루어집니다. Post가 N개 있다면 각 Post에 해당하는 User를 조회하기 위해 N번의 추가적인 질의가 이루어집..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 1. 장고 ORM이 실행하는 실제 SQL 질의문 확인 ORM에 대응되는 SQL 질의문을 확인하기 위해서는 다음과 같이 확인할 수 있습니다. queryset = Post.objects.all() str(queryset.query) ''' 'SELECT `post_post`.`id`, `post_post`.`user_id`, `post_post`.`title`, `post_post`.`content`, `post_post`.`kind`, `post_post`.`image`, `post_post`.`created_at`, `post_post`.`updated_at..
모델링을 하다보면 한 모델이 여러 개의 모델과 관계를 맺어야하는 순간이 있습니다. 많이 접해봤을 블로그 프로젝트만 해도 게시물과 댓글에 좋아요 기능을 넣기 위해서는 다음과 같은 모델링이 필요합니다. class Post(models.Model): # 생략 class Comment(models.Model): # 생략 class Like(models.Model): post = models.ForeignKey(Post, on_delete=models.CASCADE) comment = models.ForeignKey(Comment, on_delete=models.CASCADE) 물론 모델링에는 정답이 없으니 Like 를 PostLike와 CommentLike 로 나눌 수도 있고 방법은 다양합니다. 하지만 위에 소..
log 란? 로그란 운영체제나 다른 소프트웨어가 실행 중에 발생하는 이벤트나 각기 다른 사용자의 통신 소프트웨어에 발생하는 모든 상황을 기록하는 데이터입니다. 개발, 마케팅, 기획, 디자인 등 여러 분야에서 로그데이터는 유용하게 사용될 수 있습니다. 특히 개발 영역에서는 해당 데이터를 통해 다음과 같은 활용이 가능합니다. 버그 수집 및 트래킹 롤백 및 대응 등에 대한 의사결정 판단의 근거로 활용 특정 기능에 대한 사용자 진단 Django를 통해 개발을 하면서도 이러한 로그를 남기고 추후에 활용할 수 있습니다. 이번 포스팅에서는 Django에서의 logging에 대해서 알아보도록 합시다. python logging django에서는 python 내장 logging 모듈을 사용합니다. 자세한 내용은 아래서 ..