Django 9

AJAX 비동기 처리

비동기란? 요청을 보낸 후 응답을 기다리지 않고 다음 동작(코드)이 이루어지도록 하는 것이다. 즉, 응답이 돌아올 동안 다음 코드와 동작을 처리하여 실행하게 된다. Axios AJAX 요청이 도착하면 성공 및 실패 여부를 따지고 약속한 코드를 실행하도록 해준다. 성공 시 .then 코드를 실행하고, 실패 시 .catch 코드를 실행한다. Axios를 사용하는 이유 브라우저를 이해하면 쉽다. 자바스크립트가 비동기적이 아닌 동기적이라면 브라우저가 멈춰있는 상황을 많이 겪을 것이다. 비동기적이기 때문에 화면이 띄워질 동안 기다리지 않아도 되는 것이다. 이는 사용자 경험을 위한 것이기도 하다. 서버 측면에서 생각해보자면, 리소스를 적게 쓸 수 있다. HTML을 새롭게 개선해서 응답하는 것이 아닌 클라이언트 측에..

Django 2022.10.26

[Django] Follow 기능 구현

Follow 기능 구현 인스타그램이나 트위터에서 사용자가 다른 사용자를 follow하는 기능을 구현해보자! Follow 기능에서의 symmetrical symmetrical의 의미는 대칭이다. 이를 Follow 기능에서 빗대어 설명하자면, 두 사용자 모두 서로를 팔로우하고 있는 상황이라면, '내가 너를 팔로우 한다면, 너도 나를 팔로우한다.' 를 의미한다. 즉, 두 사용자가 대칭처럼 똑같이 팔로우를 하고 있는 상황이다. (맞팔) 이를 데이터베이스 관점에서 본다면, A가 B에게 친구 요청(팔로잉)을 하였고, B입장에서 B의 팔로워로 A가 등록된다. symeertical=False 인 경우 id 1과 2가 서로 팔로우하는 상황이라면 이러한 형식으로 데이터베이스에 Follow 정보가 들어가게 된다. symme..

Django 2022.10.26

[Django] 좋아요 기능 구현

Many to many relationship 한 테이블의 0개 이상의 레코드가 다른 테이블의 0개 이상의 레코드와 관련된다. 양쪽 모두에서 N:1 관계를 가진다. 예시) 병원 예약 시스템 만약 환자가 특정 의사의 진료 예약을 한다고 가정하였을 때 시스템이 N:1이라면, # hospitals/models.py class Doctor(models.Model): name = models.TextField() def __str__(self): return f'{self.pk}번 의사 {self.name}' class Patient(models.Model): doctor = models.ForeignKey(Doctor, on_delete=models.CASCADE) name = models.TextField()..

Django 2022.10.25

[Django] ForeignKey - User 정보 가져오기

1 : N (User - Comment) User 모델과 Comment 모델 간의 관계를 설정한다. 0개 이상의 댓글은 1개의 회원에 의해 작성될 수 있다. 목표 accounts 앱 (articles와는 다른 앱)에서 User 정보를 가져와, 게시물과 댓글에 username을 함께 보여준다. 인증된 회원의 댓글을 작성할 수 있도록 한다. 작성 전 로그인이 될 수 있도록 구현한다. 구현 1. User 모델을 참조하는 외래키 작성 # articles/models.py class Article(models.Model): ... user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) class Comment(models.Model..

Django 2022.10.19

[Django] 댓글 기능 구현

one to many relationship RDB(Relational Database) 외래키를 사용하여 서로 다른 테이블 간의 관계를 만든다. users, role 테이블에서 외래키를 사용하여 articles 테이블을 생성한다. 1 : N 관계 one - to many relationships 한 테이블의 0개 이상의 레코드가 다른 테이블의 레코드 한개와 관련되어 있다. 1 : N = Article : Comment 모델 관계 설정 게시글은 댓글을 0개 이상 가진다. 게시글(1)은 여러 개의 댓글(N)을 가진다. 게시글은 댓글을 가지지 않을 수도 있다. 댓글은 반드시 하나의 게시글(1)에 속한다. Django Relationship fields OneToOneField() 1 : 1 ForeignKe..

Django 2022.10.18

[Django] 이미지 업로드 구현

ImageField 이미지 업로드에 필요한 모델 필드이다. FileField를 상속받는 서브 클래스이다. 업로드 된 객체가 유효한 이미지인지 자동으로 검사를 해준다! ImageField 인스턴스는 최대 길이가 100자인 문자열로 DB에 생성된다. max_length 인자를 사용하여 최대 길이를 변경 할 수 있다. Pillow 라이브러리를 설치해야 이용 가능하다 URL 설정 1. settings.py에 Media 설정 # setting.py # Media files (user uploaded filed) MEDIA_ROOT = BASE_DIR / 'images' MEDIA_URL = '/media/ 업로드한 파일들을 보관할 디렉토리 절대 경로를 설정해준다. 성능을 위해 업로드한 파일은 데이터베이스에 저장하..

Django 2022.10.18

[Django] 로그인 & 로그아웃

로그인 상태 유지 우리가 웹 사이트에서 로그인을 하고 다른 페이지로 이동해도 로그인 상태가 유지된다. 이는 서버와 클라이언트 간의 로그인 상태를 유지하기 위해 '쿠키와 세션'을 사용한다. 쿠키 쿠키는 쉽게 말해서 사용자에게 주는 작은 데이터 조각이다. 쿠키를 Key - Value의 데이터 형식으로 저장한다. 동일한 서버에 똑같은 데이터를 보내줄 때 저장된 쿠키를 전송하는 것이다. 즉, 쿠키는 다른 요청이지만 동일한 브라우저로부터 발생한 것인지 판단할 때 주로 사용한다. 상태가 없는(stateless) HTTP에서 상태 정보를 관리하고, 사용자는 이로 인해 로그인 상태를 유지할 수 있다. 비연결지향(connectionless) 서버는 요청에 대한 응답을 보내준 후 연결을 끊는다. 네이버 메인 페이지가 대표..

Django 2022.10.12

[이론] Django 개발 환경 설정 가이드

0. 현재 위치 경로 파악하기 $ pwd /c/Users/yelki 1. 서버 환경을 만들어 줄 폴더 만들기 $ mkdir server 폴더명이 'server' 라는 폴더를 만들어주었다. 2. 해당(server)폴더로 이동하여 현재 어떤 패키지가 깔려있는지 확인한다. $ cd server $ pip list Package Version ------------------ --------- ... ... 3. 해당 폴더에 가상환경을 만들어준다. $ python -m venv server-venv server 폴더의 가상환경을 만들어주었다. 이 가상환경의 범위는 server 폴더이며, 해당 폴더 범위 밖의 환경에는 가상환경이 존재하지 않는다. 4. 해당 폴더의 폴더 및 파일을 확인하며 가상환경 구축이 제대로 ..

Django 2022.09.21

[이론] 서버 기초

서버 기초 Q. IP와 도메인은 무엇일까요? 컴퓨터에 메세지를 보내기 위해 메세지를 받을 특정 컴퓨터를 지정해야 한다. 특정 컴퓨터를 지정하여 메세지를 보내기 위해서는 각 컴퓨터마다 고유한 주소가 필요하다. IP 주소는 각 컴퓨터에 고유한 주소를 부여하는 역할을 한다. IP 주소의 형식은 '196.986.2.10' 와 같다. 'google.com'과 같이 도메인 주소는 IP주소를 사람이 읽을 수 있도록 한 형태이다. Q. 클라이언트와 서버는 무엇일까요? 클라이언트 다른 프로그램에게 서비스를 요청하는 프로그램이다. 즉, 웹 페이지나 파일의 전송을 요구한다. 서버 클라이언트의 요청에 대해 응답해주는 프로그램이다 예를 들어, 누군가가 자신의 은행 계좌 내역을 조회하려는 경우, 자신의 컴퓨터에 있는 클라이언트 ..

Django 2022.09.21