Framework/Django 45

RESTful API

RESTful API란? RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스다. 대부분의 비즈니스 애플리케이션은 다양한 태스크를 수행하기 위해 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신해야 한다. 예를 들어 월간 급여 명세서를 생성하려면 인보이스 발행을 자동화하고 내부의 근무 시간 기록 애플리케이션과 통신하기 위해 내부 계정 시스템이 데이터를 고객의 뱅킹 시스템과 공유해야 한다. RESTful API는 안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따르므로 이러한 정보 교환을 지원한다. REST란? Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키..

Framework/Django 2023.09.23

Django 테스트코드에서 setup 함수와 setupclass의 차이는 무엇입니까?

💡 setUp() 함수 각각의 테스트 메서드가 실행될 때마다 실행 각 테스트메서드는 방금 생성된 fresh한 오브젝트를 입력받음 각 테스트가 끝나면 롤백되기 때문에 데이터베이스에 대한 변경 사항을 정리하지 않아도 된다 테스트 중 내용이 변경될 수 있는 객체를 이곳에서 생성한다 단점 : 테스트당 한 번 호출됨 => 시간이 오래 걸리는 경우 테스트 속도가 크게 느려질 수 있다. 💡 setUpClass() @classmethod 데코레이터를 달아 함께 사용, 메서드 인자로 cls를 넘겨준다 모든 테스트 함수들을 아울러 데이터를 한 번만 설정한다 한 곳에 테스트에 필요한 데이터들을 정의하고 관리할 수 있다는 장점이 있다 단점 : 테스트 클래스가 시작되기 이전에 전체를 한 번 호출하기때문에 테스트 도중에 자동 롤..

Framework/Django 2023.09.23

장고 50문 50답 채우기(4)

16. Django의 기본 기능을 사용하는 것과 JWT를 사용하여 로그인 기능을 구현하는 것에는 어떤 차이점이 있습니까? JWT를 사용하면 유저 관련 정보를 모두 base64 인코딩을 하고 유지 시간도 짧아 보안에 유리하며, 다른 프레임워크에 호환성도 높다. Django 기본 인증은 Django 내장인 만큼 훨씬더 간편하게 사용할 수 있는 이점이 있다. 17. 데이터 테이블 간의 관계를 나타내는 FK, OneToOne, ManyToMany 필드에 대해서 설명하시오 FK: 다대일 관계. 다른 테이블과 관계가 있을 때 다른 테이블의 내용을 불러오고 이용할 수 있다. OnetoOne: 1:1의 대응 관계 테이블입니다. 예를들어 유저와 유저프로필 모델 ManytoMany: A 모델에 연관된 B 모델 필드가 여러..

Framework/Django 2023.07.25

장고 50문 50답 채우기(3)

11. Django를 통해 CRUD를 구현하는 방법에 대해서 HTTP Method와 함께 설명하시오 get: 정보 조회 (read) post: 정보 업로드(create) put: 정보수정(update) delete: 정보 삭제(delete) 12. Django에서 테이블을 설계하고 데이터베이스에 반영하는 방법에 대해서 설명하시오 models.py에 models.Model을 상속해 클래스를 생성하고 charfield, integerfield 등 필드를 사용해 테이블을 설계합니다. 만들어진 테이블은 python manage.py makemigration 명령어로 migration 파일을 생성한뒤 python manage.py migrate로 반영합니다. 13. 회원가입을 할 때 비밀번호를 암호화하여 저장하는..

Framework/Django 2023.07.24

장고 50문 50답 채우기(2)

6. Django의 MTV패턴 시스템은 무엇입니까? Model-Template-View로 이루어진 패턴으로 Model은 데이터베이스에 저장되는 데이터를 의미하고, Template은 사용자가 시각 적으로 확인할 수 있는 화면 즉, UI를 담당하는 부분이고, View는 데이터를 가공하고 처리하는 부분을 의미합니다. 7. ORM에 대해서 설명하시오 Object-Relational Mapping의 약자로 SQL이라는 언어 대신 데이터베이스를 쉽게 다룰 수 있게 하는 방법입니다. 8. Django의 장단점은 무엇입니까? 장점: 파이썬 웹프레임워크 중에서 가장 사용자가 많아서 자료 찾기가 편리하며, RDBMS와의 상호 작용을 완전히 지원하는 기본 내장 ORM이 함께 제공됩니다. 단점: 무겁고 복잡하며, Flask와..

Framework/Django 2023.07.24

ㅁㄴㅇㄹ

1. Django Template Engine은 무엇이고 어떤 기능을 제공합니까? Template Engine은 웹 프레임워크인 장고의 HTML을 동적으로 생성할 수 있는 편리한 방법이다. 템플릿에는 원하는 HTML 출력의 정적 부분과 동적 콘텐츠가 삽입되는 방법을 설명하는 몇 가지 특수 구문이 포함되어 있다. Django 프로젝트는 하나 이상의 템플릿 엔진으로 구성할 수 있다. Django는 창의적으로 DTL(Django template language)이라고 불리는 자체 템플릿 시스템과 인기 있는 대체 Jinja2를 위한 내장 백엔드를 제공한다. Django는 백엔드에 관계없이 템플릿을 로드하고 렌더링하기 위한 표준 API를 정의한다. Django Template Engine은 Django 웹 프레임..

Framework/Django 2023.07.20

장고 50문 50답 채우기(1)

1. Django가 무엇인지 설명하시오 Django는 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework) 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어진 웹 프레임워크 2. Django를 백엔드 스택으로 선정한 이유는 무엇입니까? 지금껏 공부한 언어인 파이썬을 온전히 활용할 수 있음 웹 개발에 간편한 기능들이 기본적으로 탑재되어 있음 장고를 사용하면 웹서버를 설치하지 않고 파이썬 명령어 하나로 서버를 실행할 수 있다. 파이썬 코드로 데이터베이스를 충분히 다룰 수 있다. 보안 기능 제공 장고 보안 가이드가 기본적으로 제공됨 3. Django에는 어떤 장점이 있습니까? APP 단위 독립적 구성 하나의 App은 각각 별도의 모델(Mod..

Framework/Django 2023.07.14

대댓글 작성

class Comment(models.Model): parent = models.ForeignKey('self', related_name='reply', on_delete=models.CASCADE, null=True, blank=True) 대댓글 모델을 굳이 추가할 필요 없이, 댓글 모델에 다음과 같이 스스로를 참조하는 코드를 작성하면, 그것이 곧 대댓글이 된다. 시리얼라이저에는 다음과 같이 함수를 오버라이딩해서 가져오면 된다. class CommentSerializer(serializers.ModelSerializer): reply = serializers.SerializerMethodField() class Meta: model = Comment fields = ('board', 'id', 'use..

Framework/Django 2023.06.28

장고 Q 사용 (Code Refactoring)

Q는 장고 model에서 제공하는 orm 중 하나로, DB filter 조건에 and / or문을 추가하고 싶을 때 사용한다. 그럼 그냥 where에 or 문 넣으면 되는 걸 왜 이렇게 어려운 용어로 필터링할까? 코드가 간편해지기 때문. # 예시 from django.db.models import Q def get_queryset(self): search_key = self.request.GET.get("search", None) q = Q() if search_key: q = self.search(search_key) category_id = self.request.GET.get("category") 위의 코드를 Q를 쓰지 않고 리팩토링하면 어떻게 될까? def get_queryset(self): se..

Framework/Django 2023.06.23

taggit 공식 문서 읽어보기

프로젝트에 태그를 만들어보기 위해 taggit 공식문서를 읽어보았다. 먼저 필요한 패키지 다운로드와 환경설정이 필요하다. 내 프로젝트는 가상환경을 poetry로 했기 때문에 poetry 명령어를 썼다. # 터미널 명령어 poetry add django-taggic-serializer poetry install # settings.py INSTALLED_APPS = ( ... 'taggit', 'taggit_serializer', ) 관리자가 설정된 태그를 관리하게 하기 위해서는 다음과 같은 코드를 작성해둬야 한다. # admin.py class MyModelAdmin(admin.ModelAdmin): list_display = ["tag_list"] def get_queryset(self, request..

Framework/Django 2023.06.21