Python 112

[Django] Pure Django vs DRF (Django Rest Framework)

👉 Pure Django vs DRF Restful API는 Pure Django와 DRF (Django Rest Framework) 둘 다를 통해 만들 수 있다. DRF는 Restful API 서버를 보다 쉽게 만들 수 있게 해주는 라이브러리로, Serailize를 통해 DB Data를 JSON으로 바꿔주는 큰 장점이 있다. Pure Django DRF (Django Rest Framework 개발 목적 웹 풀스택 개발 백앤드 API 서버 개발 개발 결과 웹 페이지를 포함한 웹 서비스 API 서버 응답 형태 HTML JSON

Python/Django 2022.06.28

[Django] 트랜잭션 이란? (Transaction.atomic)

트랜잭션이란? 트랜잭션(Transaction)이란 데이터베이스의 상태를 변경하는 작업의 단위를 의미 트랜잭션 작업이 정상적으로 완료되면 데이터베이스에 반영 (commit) 트랜잭션 중 일부 작업이 실패한다면 실행 전으로 되돌아감 (rollback) 트랜잭션은 크게 4가지의 성질을 가짐 원자성 (Atomicity) : 트랜잭션 내용이 모두 반영되거나, 전부 취소되거나 일관성 (Consistency) : 트랜잭션 수행 전과 수행 후의 상태가 같아야 함 독립성 (Isolation) : 트랜잭션 진행 중 다른 트랜잭션에서 참조 불가 지속성 (Durablility) : 완료된 트랜잭션의 결과는 시스템이 고장나도 영구적으로 반영되어야 함 예제 소스 코드 1. Decorator 방식 # User 수정 @transac..

Python/Django 2022.06.21

[Django] User 모델 작성 방법 비교 (AbstractUser vs AbstractBaseUser)

👉 1. AbstractBaseUser vs AbstractUser 비교 AbstractUser AbstractBaseUser 사용 시기 Django의 기본 유저 모델이 제공하는 다양한 인증 기능들을 사용 하는 경우 기존 필드에 추가 커스텀 필드만 필요시 사용 최소한의 User 필드만 상속 받아 커스텀하여 사용 로그인 방식도 변경(ex. 아이디를 email로), 할 수 있고, 인증 절차를 직접 구현하고 싶을 때 사용 가능 PermissionsMixin 을 함께 상속하여, Django의 기본 그룹, 허가권 관리 등을 사용 가능 생성 테이블 비교 myuser 테이블 (11개 필드)로 구성 id, username, password, last_login, is_superuser, first_name, last_..

Python/Django 2022.06.19

[Django] CBV (클래스 기반 View) vs FBV (함수 기반 View)

Django의 MTV (Model - Template - View) 에서 View를 작성하는 방법은 다음 두 가지가 존재 CBV (Class Based View) FBV (Function Based View) 두 방법에 대한 작성 예시와 장단점을 알아보려고 한다. 1. CBV vs FBV 장단점 비교 장점 단점 CBV 객체 지향 기법으로 확장, 재사용 용이 IF 함수 대신 메소드 기반이라 코드 구조가 깔끔 Generic 뷰, Mixin 클래스 뷰 등을 사용 가능 Generic 뷰, Mixin 클래스 뷰를 사용하기 위한 학습 필요 FBV 데코레이터 사용 명로 가독성 좋음 확장, 재사용이 어렵다. 2. CBV (클래스 기반 View) 코드 # views.py from django.http import Htt..

Python/Django 2022.06.19

[Django] ORM Queryset API - 메소드 정리

👉 1. 생성 .create() : 데이터 1개만 생성 .bulk_create() : 데이터 여러개 생성 .get_or_create() : 조회 후 없으면 생성 # Create TeamBoard.objects.create(id=12, team='L', score=3, lastyear_ranking=11) # Create 여러개 TeamBoard.objects.bulk_create([ TeamBoard(team='M', score=2, lastyear_ranking=12), TeamBoard(team='N', score=2, lastyear_ranking=12), TeamBoard(team='O', score=1, lastyear_ranking=13) ]); # 조회 후 없으면 Create TeamBoar..

Python/Django 2022.06.15

[Django] 무식한 라이브러리 분해 4 (settings.py)

Settings.py는 기본적으로 Django 프로젝트에서 DB 설정, APP 설정, 기본 정책 설정 등의 기본 설정을 최초 하는 곳이다. 👉 1. BASE_DIR Setting BASE_DIR : 프로젝트 ROOT 폴더 Path(__file__) : 현재 .py 이름의 Path화 Path(__file__).resolve() : 절대 경로 반환 Path(__file__).resolve().parent : 반환된 절대 경로의 부모 Path(__file__).resolve().parent : Django 프로젝트 위치 from pathlib import Path # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(_..

Python/Django 2022.06.15

[Django] CSRF Token + Form 방식

Django 에서 HTTP Request를 보낼 때에는 1) Form으로 보내는 방법과 2) Ajax 비동기로 보내는 방법이 있으며, CSRF Token을 요청에 포함할 것을 강요한다. CSRF Token을 통해 위조 공격에 대한 보안을 쉽게 작성 할 수 있다. 👉 방법 2가지 방법 1) Form 으로 데이터 보내는 방법 방법 2) Ajax로 보내는 방법 👉 GIthub 전체 코드 (링크) GitHub - SeonminKim1/Python: Python Framework & Libary Python Framework & Libary. Contribute to SeonminKim1/Python development by creating an account on GitHub. github.com 👉 코드 -..

Python/Django 2022.06.12

[Django] CSRF Token + Ajax 비동기 통신

Django 에서 HTTP Request를 보낼 때에는 1) Form으로 보내는 방법과 2) Ajax 비동기로 보내는 방법이 있으며, CSRF Token을 요청에 포함할 것을 강요한다. CSRF Token을 통해 위조 공격에 대한 보안을 쉽게 작성 할 수 있다. 👉 방법 2가지 방법 1) Form 으로 데이터 보내는 방법 방법 2) Ajax로 보내는 방법 👉 GIthub 전체 코드 (링크) GitHub - SeonminKim1/Python: Python Framework & Libary Python Framework & Libary. Contribute to SeonminKim1/Python development by creating an account on GitHub. github.com 👉 코드 -..

Python/Django 2022.06.12

[Django, DB] Migration 초기화 방법 (+window 자동화 code)

초기화 시기 Sqlite DB를 실수로 지워버렸을 때 잦은 model 변경으로 migrations 꼬였을 때 방법 1. Database Server 삭제 (db.sqlite3, mysql, postgresql 등) 2. 각 app들의 migrations/ 폴더 내의 __init__.py를 제외한 모든 파일 삭제 (중요!!) 3. 위 2. 가 진행되면 migrations 폴더와 __init__.py 만 폴더내에 남아 있어야 함. (없으면 진행안됨) 4. 다음 명령어 실행하면 정상적으로 돌아와있는 DB를 볼 수 있다. python manage.py makemigrations python manage.py migrate 자동화 코드 (window ver) Project 폴더 밑에서 python init_db...

Python/Django 2022.06.05

[Django] Message Framework

Django 에서는 사용자 요청에 대한 응답의 일환으로 일회용 메시지 Message Framework를 제공한다. https://docs.djangoproject.com/en/4.0/ref/contrib/messages/ The messages framework | Django documentation | Django Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate docs.djangoproject.com Message tags는 DEBUG, INFO, SUCCESS, WARNING, ERROR 5종류가 있다. Me..

Python/Django 2022.06.04