[Django] URL 단축 서비스 만들기
·
Django
Django 강의에서 URL 단축 서비스 실습을 진행했다.URL 단축 서비스는 긴 웹 주소를 짧은 주소로 변환해 주는 서비스이다.예를 들어 아래와 같은 긴 URL이 있다고 가정해보자.http://www.climate-skeptic.com/2008/10/global-warming-accelerating.html이 주소를 다음과 같이 짧게 줄일 수 있다.https://bit.ly/x사용자는 짧은 URL로 접속하지만, 실제로는 원래의 긴 URL로 이동하게 된다. 프로젝트 생성먼저 URL 단축 서비스를 만들기 위한 Django 프로젝트를 생성한다.가상환경 생성`python3.13 -m venv .short_url`가상환경 활성화Mac: `source .short_url/bin/activate`Windows: ..
[Django] Kakao 소셜 로그인
·
Django
일반 회원가입은 사용자가 아이디와 비밀번호를 직접 생성해야 한다.하지만 최근 대부분의 서비스는 Google, Kakao, Naver 같은 외부 플랫폼 계정을 이용해 간편하게 로그인할 수 있는 기능을 제공한다. 소셜 로그인(Social Login)사용자가 별도의 회원가입 없이 이미 가입된 서비스의 계정을 사용하여 웹사이트나 애플리케이션에 로그인할 수 있도록 지원하는 인증 방식Google, Facebook, Naver, Kakao 등의 계정을 통해 다른 서비스에 접속 소셜 로그인 동작 과정1. 사용자 동의 과정 사용자가 "카카오 로그인" 버튼을 클릭하면 카카오 로그인 페이지로 이동한다.class KakaoSocialLoginView(View): def get(self, request): ..
[Django] 장고 회원 시스템 (Session과 User Model)
·
Django
Django SessionDjango는 로그인 상태를 유지하기 위해 Session 기능을 제공한다.Session은 사용자의 상태 정보를 서버에 저장하여 HTTP의 무상태성(Stateless)을 해결하는 역할을 한다. HTTP의 무상태성(stateless)서버가 클라이언트의 이전 요청에 대한 상태 정보를 저장하지 않는 특성각 요청은 독립적이며, 서버는 요청마다 클라이언트를 식별할 수 있어야 함 HTTP는 기본적으로 상태를 저장하지 않는 프로토콜이다.즉, 서버는 이전 요청을 기억하지 않는다.예를 들어 사용자가 로그인 요청을 보냈다고 가정해 보자.1. 로그인 요청2. 메인 페이지 요청3. 마이페이지 요청각 요청은 서로 독립적으로 처리된다.따라서 별도의 방법이 없다면 서버는 현재 요청을 보낸 사용자가 누구인지 ..
[Django] 장고 회원 시스템 (User 모델과 Admin 페이지)
·
Django
장고는 기본적으로 회원 시스템이 기본적으로 제공된다.장고는 로그인, 로그아웃, 회원가입, 비밀번호 관리 같은 기능을 위한 인증(Authentication) 시스템을 내장하고 있다.장고의 기본 User 모델과 관리자 페이지(Admin)에 대해 알아보자. Django User장고는 기본적으로 회원 시스템을 내장로그인, 로그아웃, 회원가입, 비밀번호 변경 같은 기능 제공User Model`from django.contrib.auth.models import User` User 모델필드명설명username사용자 IDemail이메일 주소password암호화된 비밀번호is_staff관리자 여부is_superuser슈퍼 관리자 여부is_active계정 활성화 여부date_joined계정 생성일last_login마지막..
[Django] Function-Based View와 Class-Based View
·
Django
Django에서 View는 사용자의 요청을 받아 처리하고 응답을 반환하는 역할을 한다.이전 글에서는 함수를 사용하여 View를 작성하는 Function-Based View(FBV)를 살펴보았다.이번에는 Function-Based View의 한계와 이를 개선하기 위해 등장한 Class-Based View(CBV)에 대해 알아보자. Function-Based View(FBV)함수를 사용하여 View를 작성하는 방식하나의 함수에서 두 가지 이상의 기능 처리(GET, POST 등)쉬우나 코드가 길어지고 복잡도 증가from django.shortcuts import renderdef post_create_view(request): if request.method == "GET": return ..
[Django] 좋아요 기능 구현과 F Expression
·
Django
좋아요 기능은 단순히 게시글의 좋아요 수를 1 증가시키는 기능이다.하지만 여러 사용자가 동시에 좋아요를 누를 수 있기 때문에 단순히 Python 코드에서 `+= 1`을 사용하는 방식은 주의가 필요하다. 좋아요 View 구현def post_like_view(request, post_id): post = get_object_or_404(Post, id=post_id) post.points = F("points") + 1 # post.points = F() post.save() post.refresh_from_db() return render( request, template_name="post_detail.html", context={"post":..
[Django] ORM으로 데이터 생성, 조회, 수정, 삭제(CRUD) 해보기
·
Django
ORM(Object-Relational Mapping)데이터베이스의 테이블을 Python 객체처럼 다룰 수 있도록 도와주는 기술편리한 데이터베이스 스키마(테이블, 컬럼 등) 생성/수정/삭제 지원Python을 통해 데이터를 쉽게 조회/변경할 수 있도록 지원 ORM의 장점SQL 직접 작성 X데이터베이스 종류에 크게 의존 XPython 코드로 데이터를 쉽게 조회, 생성, 수정, 삭제 가능데이터베이스 스키마 관리 편리 Django Shell 실행`python manage.py shell`shell: Django 프로젝트 환경이 적용된 Python 콘솔 기존 모델 참고class Post(models.Model): title = models.CharField(max_length=128) body = ..
[Django] 장고 Model과 Migration 이해하기
·
Django
Django Model데이터베이스의 테이블을 Python 클래스로 표시한 것 (테이블 구조 정의)예를 들어 게시글 데이터를 저장할 때,게시글에는 등의 정보가 필요이러한 정보를 데이터베이스에 저장하기 위해 모델을 사용 Django 모델 생성 방법models.Model을 상속받아 class 정의타입에 맞는 field를 통해 속성 정의from django.db import models# 게시물# - 제목, 본문, 작성자 이름, 좋아요 개수, 게시물 생성 시간class Post(models.Model): title = models.CharField(max_length=128) body = models.CharField(max_length=1024) author_name = models.Char..