Framework/Django 45

테스트코드 외에 test%.py 명명 금지

$ python manage.py test accounts [Errno 2] No such file or directory: 'C:\\Users\\jmmas\\OneDrive\\BatangScreen\\Coding\\Project\\kiki-project-django\\kikiproject\\shortcuts\\management\\commands\\shortcuts.json' . . . AttributeError: module 'shortcuts.management.commands.test' has no attribute 'Command' (venv) 테스트코드를 작성하고, 테스트를 해보기 위해 명령어를 눌렀는데 위와 같이 문제가 생겼다. 이상해서 디렉토리를 들여다보니.. test.py가 이미 존재한 ..

Framework/Django 2024.03.19

소셜로그인에서 redirect uri는 왜 필요한가?

리디렉션(Redirection)은 웹 서버나 웹 애플리케이션이 클라이언트의 요청을 받았을 때, 해당 요청을 다른 위치로 전송하는 프로세스를 말한다. 즉, 클라이언트가 요청한 URL이나 리소스를 다른 URL이나 리소스로 이동시키는 것을 의미한다. 리디렉션은 보통 다음과 같은 상황에서 발생한다: 인증 및 인가 프로세스: 사용자가 로그인 페이지로 이동하여 인증을 완료한 후에, 시스템은 사용자를 인증된 페이지로 리디렉션한다. URL 재작성: 특정 URL에 대한 요청이 있을 때, 서버는 요청된 URL을 다른 URL로 리디렉션하여 요청을 처리합니다. 이는 웹 사이트의 구조 변경이나 특정 페이지의 이동 등에 사용된다. SEO (검색 엔진 최적화): 서버는 특정 URL에 대한 요청을 다른 URL로 리디렉션하여, 검색 ..

Framework/Django 2024.03.16

Django 테스트코드에서 setuptestdata, setup 함수의 차이

setUpTestData와 setUp은 Django의 테스트 케이스 클래스에서 사용되는 두 가지 메서드로, 각각 다른 목적과 사용 시점을 가지고 있다. def setUpTestData(cls) setUpTestData 메서드는 테스트 클래스 전체에서 단 한 번 호출되며, 테스트 데이터를 설정하는 데 사용된다. 모든 테스트 메서드가 공유하는 고정된 데이터를 설정할 때 주로 사용된다. 데이터베이스에 대한 변경이 필요한 경우에만 사용해야하며, 한 번만 실행되기 때문에 경량의 테스트 데이터를 설정하는 데 적합하다. 데이터베이스에 데이터를 추가, 수정, 삭제할 수 있다. def setUp(cls) setUp 메서드는 각각의 테스트 메서드가 실행되기 전에 호출되며, 특정 테스트 케이스에 필요한 초기화 작업을 수행하..

Framework/Django 2024.01.01

HTTP POST 요청 시 headers 매개변수

HTTP 요청에 헤더를 포함하는 것은 일반적으로 API 요청에서 사용자 인증이나 기타 정보를 전달하기 위한 표준적인 방법이다. Cloudflare API는 클라우드플레어 계정의 특정 작업을 수행하기 위해 사용자를 인증하는 데에 헤더의 Authorization 필드를 사용하고 있다. 아래 예시 코드를 작성하면서 공부하였다. class UserAvatarGetUploadURLView(APIView): def post(self, request): """GetUploadURL.post 사용자가 사진을 첨부해서 클라우드플레어에 전송하기전에 먼저 일회용 업로드 url을 요청합니다. Args: url (str): 클라우드플레어에서 미리 지정한 일회용 url 요청 링크 one_time_url (str): post요청이..

Framework/Django 2024.01.01

Django Template Engine은 무엇이고 어떤 기능을 제공합니까?

Django Template Engine은 Django 웹 프레임워크의 일부로서, 동적 웹 페이지를 생성하기 위해 사용되는 도구입니다. Template Engine은 템플릿 파일을 사용하여 데이터와 로직을 결합한 후, HTML 또는 다른 텍스트 기반 출력물을 생성합니다. 이를 통해 웹 애플리케이션의 프론트엔드와 백엔드 사이에 유연한 계층을 제공하며, 개발자와 디자이너간의 협업을 용이하게 합니다. Django Template Engine의 주요 기능은 다음과 같습니다. 변수 치환: 템플릿에서는 중괄호 {{ }} 안에 변수를 넣어 표시할 수 있으며, 이 변수는 런타임에 해당 변수의 값을 치환하여 출력합니다. 태그: Django 템플릿은 다양한 기능을 제공하는 태그를 사용하여 템플릿 로직을 수행할 수 있습니다..

Framework/Django 2023.12.18

_meta

Django의 _meta API는 모델 클래스의 메타데이터에 접근할 수 있게 해주는 기능이다. 이 API를 사용하면 모델의 속성, 필드 및 다양한 메타 정보에 프로그래밍적으로 접근할 수 있다. _meta 속성은 보통 일상적인 웹 애플리케이션 개발에서는 직접적으로 _meta를 사용할 일이 많지 않다. 대부분의 경우에는 간단한 쿼리와 모델 정의만으로 충분하다. 하지만 특정 상황에서 _meta를 사용하는 것이 유용할 수 있다. 동적 쿼리 빌드 모델 간 관계 탐색 일반화된 코드 작성 앱 내 모델 동적 처리 프로젝트 유틸리티 및 도구 개발 정보 가져오는 방식 상수로 남기기 1번에 대한 예시 from django.db import models class Product(models.Model): name = mode..

Framework/Django 2023.12.17

ORM이란?

ORM은 "Object-Relational Mapping"의 약어로, 객체와 관계형 데이터베이스 간의 매핑을 의미한다. 관계형 데이터베이스는 테이블, 행, 열 등의 구조를 가지고 있고, 객체 지향 프로그래밍에서는 클래스, 객체, 상속 등의 구조를 가지고 있다. ORM은 이러한 두 가지 다른 데이터 모델 간의 간극을 줄이기 위해 사용된다. ORM은 개발자가 객체 지향 언어를 사용하여 데이터베이스와 상호 작용할 수 있도록 도와준다. 객체와 데이터베이스 테이블 간의 매핑을 자동으로 처리하며, 개발자는 SQL 쿼리를 직접 작성하는 대신 객체에 대한 조작을 통해 데이터베이스와 상호 작용할 수 있다. 일반적으로 ORM은 언어나 프레임워크에 종속적일 수 있으며, 대표적인 ORM 도구는 Hibernate(Java), ..

Framework/Django 2023.12.16

reverse, reverse_lazy

장고에서 두 함수는 모두 from django.urls import _하여 url을 생성하는 함수이다. 하지만 이름이 다르듯, 함수의 차이도 존재한다. reverse() : 함수 호출 시 즉시 URL 생성 reverse_lazy() : URL이 필요한 시점까지 생성을 미루고 필요 시 생성, 지연평가(lazy evaluation)를 사용 * 지연 평가(Lazy Evaluation) : 특정 연산이 필요한 시점까지 실행을 연기하는 컴퓨터 프로그래밍의 패턴. 즉, 데이터나 연산의 평가를 가능한 최후 순간으로 미루는 것을 의미한다. 이는 성능 최적화, 자원 효율성, 그리고 필요한 경우에만 계산을 수행하는 효율적인 방법을 제공한다. 파이썬에서는 앞서 공부한 제너레이터가 예시이다. 장고에서 reverse_lazy ..

Framework/Django 2023.12.16

DRF manage.py 해석

개인 프로젝트를 진행하면서 DRF를 하나하나 이해해보기 위해 여러 가지를 보고 있는데, 모든 명령 코드가 manage.py에서 시작되기 때문에 manage.py 코드를 꼼꼼히 읽어보았다. #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" import os import sys def main(): """Run administrative tasks.""" os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Studysyncer.settings') try: from django.core.management import execute_from_command_line except..

Framework/Django 2023.10.31

DRF Serializer는 무엇이며, 어떤 기능을 수행합니까?

Serialize를 직역하면 '직렬화하다'라는 뜻이 나온다. 그렇다면 직렬화는 왜 수행하고, 어떻게 수행하는지 궁금해져서 정리를 해보았다. 먼저 직렬화를 이해하기 위해서는 Rest API에 대해 이해하고 넘어가야 한다. Rest API Rest API는 Rest를 기반으로 만들어진 API를 의미한다. Rest는 Representational State Transfer의 약자로, 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 말한다. 다시 말해, HTTP URI를 통해 자원(resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것 데이터가 요청될 때 JSON이나 XML을 통해..

Framework/Django 2023.10.11