Django & DRF 11

[Django] Django의 패키지(Package) & 앱(App)

패키지, 앱, 모듈? 그게 뭔데? 패키지, 앱, 모듈은 모두 프로그래밍에서 코드를 구조화하는 방식이다. 패키지(Package) : 여러 모듈을 모아 놓은 디렉토리. 관련된 모듈들을 그룹핑해서 보다 체계적으로 관리할 수 있으며, 패키지는 하위 패키지를 포함할 수도 있다. 앱(Application) : 일반적으로 기능별로 분리되어 있는 작은 단위의 독립적인 모듈이다. 앱은 패키지와 유사한 구조를 가지고 있다. 모듈(Module) : 코드가 들어 있는 파일. 모듈은 변수, 함수, 클래스 등을 정의할 수 있으며, 다른 모듈에서 import해서 사용할 수 있다. 패키지, 앱, 모듈로 코드를 구조화하면 관리와 유지보수가 편리하고 코드의 재사용성도 높아진다. Django의 패키지(Package) & 앱(App) 패키..

Django & DRF 2023.04.28

[Django] 유저 모델(클래스) 종류

Django 유저 모델(클래스) 종류 AbstractUser : AbstractBaseUser를 상속하여 사용자 모델을 커스터마이징할 수 있는 추상 클래스입니다. 이 클래스는 username, email, first_name, last_name 등을 필드로 가지고 있습니다. AbstractBaseUser : 최소한의 필드만을 가진 추상 클래스로, Django의 인증 시스템에서 사용자 모델을 커스터마이징할 때 사용됩니다. 이 클래스를 상속받아 자신만의 사용자 모델을 만들어야 하며, 이 경우 반드시 USERNAME_FIELD와 REQUIRED_FIELDS를 정의해야 합니다. PermissionsMixin : 사용자 모델에 대한 권한을 관리하기 위한 Mixin 클래스입니다. 이 클래스를 상속받으면 사용자 모델..

Django & DRF 2023.04.26

[Django] Meta 클래스 - Model 클래스에 대한 추가 설정

1. 'Meta' 클래스란? 'Meta' 클래스는 'Model' 클래스 내부에 선언되어 'Model' 클래스에 대한 추가 설정을 제공하는 클래스이다. 2. 형태 'class Meta:' 로 정의된다. class User(AbstractUser): class Meta: db_table = 'my_user' 3. 'Meta' 클래스에서 제공하는 주요 속성들 'abstract' : 추상 모델 여부를 지정 'app_label' : 모델이 속한 앱의 이름을 지정 'db_table' : 모델이 사용할 데이터베이스 테이블 이름을 지정 'default_related_name' : 모델과 관련된 객체의 역참조 이름을 지정 'verbose_name' : 모델의 이름을 지정 'verbose_name_plural' : 모델의..

Django & DRF 2023.04.21

[Django] 세션(Session), 쿠키(Cookie), 토큰(Token), JWT(Json Web Token)?

세션, 쿠키, 토큰, JWT 이란 무엇인가? 세션(Session), 쿠키(Cookie), 토큰(Token), JWT(Json Web Token)은 인증과 권한 부여를 구현하기 위해 사용되는 다양한 방법 중 일부이다. 각각의 특징을 비교해보자!! 1. 세션(Session) 서버 측에서 인증 정보를 저장합니다. 쿠키(Cookie)를 이용해 클라이언트와 상호작용합니다. 클라이언트가 로그인을 시도하면 서버는 세션 ID를 발급하고, 이 세션 ID를 쿠키(Cookie)에 저장합니다. 클라이언트는 이후 요청 시, 이 쿠키(Cookie)를 서버에 보내며, 서버는 이 쿠키(Cookie)를 통해 세션 정보를 식별하고 인증을 수행합니다. 2. 쿠키(Cookie) 클라이언트 측에서 인증 정보를 저장합니다. 서버와 클라이언트 ..

Django & DRF 2023.04.20

[Django] http 요청 method

http 요청 method 출처 문서 1 출처 문서 2 출처 문서 3 출처 문서 4 HTTP는 요청 메소드를 정의하고, 주어진 리소스에 수행하길 원하는 행동을 나타낸다. 요청 메소드의 종류에는 여러가지가 있다. 그 중 가장 많이 사용해 본 메소드는 GET과 POST 실제로도 가장 빈번하게 쓰이는 메소드인듯 하다. 각 메소드를 정리해보자. GET 특정 리소스의 표시를 요청 데이터를 받아와 사용자의 화면에 띄워주는 역을 한다. HEAD GET과 유사하나 응답 본문을 포함하지 않음 즉, GET과 동일한 요청을 하지만 값을 반환하진 않는다는 소리다. POST 특정 리소스에 엔티티 제출 서버에 특정 데이트를 보낼 때 사용한다. PUT, PATCH 리소스를 만들거나 업데이트(수정) PUT은 모든 리소스를 업데이트 ..

Django & DRF 2023.04.18

[Django] Co.Meet 커뮤니티 페이지 - 팀프로젝트 KPT

Keep git사용시 fork짱 : 굳이 콜라보레이션을 사용하지 않고 fork로 commit을 하였기 때문에 main브랜치 보호가 아주 따봉이다 협업태도 : 적극적인 소통 기능단위 분업 : 서로 conflict날 확률이 적고 각자의 함수를 잘 알고있기에 templates생성에도 분업이 가능하여 매우 작업효율이 올라감 공식문서 활용 : 정확한 출처가 있는 문서를 읽는것이 중요하기 때문에 아무튼 그렇다 ㅇㅇㅇㅇㅇㅇ .gitignore : github업로드시 불필요 파일과 보안취약한 파일숨김기능 이를 위해 readme에 start routine삽입 Problem 코드 최적화 : http method를 활용하기 ex) edit함수와 delete함수를 합쳐서 코드를 최적화하면 좀더 깔끔하게 정리할 수 있다 불필요..

Django & DRF 2023.04.18

[Django] SNS 프로젝트 - 화면 띄우기(회원가입, 로그인)

Template Template의 html파일들이 결과적으로 사용자에게 보여지는 화면이 된다. 폴더 및 파일 생성 뼈대가 되는 base.html 파일과 user 템플릿 폴더 생성 html 만들기 base.html을 보면 상단에 네비게이션바가 있는 화면임을 알 수 있다. signin.html의 첫줄은 이러한 base.html 파일에다가 이어서 작성해줄 것이라는 뜻의 장고 문법이다. (signup.html 파일도 마찬가지) Urls 프로젝트 폴더의 urls.py ⇒ app폴더의 urls.py로 위임 include 함수를 import 목록에 추가 urlpatterns 리스트에 path('빈경로', include('.urls')) 추가이는 사용자가 접속한 경로를 .urls 로 연결하라는 뜻이므로 (빈경로는 ht..

Django & DRF 2023.04.10

[Django] SNS 프로젝트 시작하기 - 구조 만들기!!

App 구현하고자 하는 기능들 정리해보기예를 들어, SNS 를 만드는 것이 목표라면 크게 세가지 기능 구현을 생각해볼 수 있다. 사용자 관리 (회원가입 / 로그인 / 로그아웃) 글쓰기 친구 만들기 등등… 프로젝트 구조를 만들 때에는 내가 만들고자 하는 것이 무엇인지, 구현하고자 하는 기능이 무엇인지를 생각해본다. 기능 관리 단위로 App 만들기따라서, user앱과 tweet앱을 생성하여 구조를 잡을 수 있다. 그 다음, 이 기능들을 어떻게 나누어 관리하는 것이 효율적일지를 생각해본다. 이 경우 크게 ‘사용자’와 ‘글’로 나눌 수 있다. Model ORM (Object Relational Mapping) 이란?Django 프로젝트의 구조를 한번 더 살펴보자.장고는 ORM이라는 (database) model..

Django & DRF 2023.04.10

[Django] 프로젝트 구축하기

Django 프로젝트 본격 구축하기!! Django 프로젝트 폴더를 만들고 나면 폴더 안에 여러 개의 파일이 생성된 것을 볼 수 있다. (settings.py, urls.py, manage.py 등등) 그러나 실제로 이 프로젝트 안에서 어플리케이션을 구현하는 것이 아니라, app이라는 더 작은 단위를 만들어 그 안에서 구현하게 된다. 이 때, 여러 개의 app을 만들어 연관된 로직을 그룹핑하여 관리할 수 있다. 이처럼 Django 프로젝트의 구조를 먼저 살펴보면 대략 아래와 같다. App 만들기 django-admin startapp settings.py > INSTALLED_APPS > 생성한 app 추가 Routing 라우팅(경로설정) 어떤 웹 프레임워크를 사용하든 제일 먼저 하는 작업으로, 사용자가..

Django & DRF 2023.04.07