Today I Learned (2024-11-10)
목차
오늘 공부한 내용
1. Django
Django 개발의 주요 개념 정리: HTTP, Session, Middleware 등
1. Custom Filter
Django 템플릿에서 커스텀 필터(Custom Filter) 는 데이터 처리를 유연하게 해주는 도구임.
Django는 기본적인 템플릿 필터를 제공하지만, 사용자가 직접 필터를 정의하여 템플릿에서 복잡한 연산을 수행할 수 있음.
이를 통해 코드 중복을 줄이고 재사용성을 높일 수 있음.
활용 예시:
from django import template
register = template.Library()
@register.filter
def custom_uppercase(value):
return value.upper()
위와 같은 커스텀 필터를 등록하면 템플릿에서 {{ value|custom_uppercase }}
로 사용할 수 있음.
2. HTTP
HTTP는 웹 애플리케이션과 서버 간의 통신을 위한 기본 프로토콜임.
Django에서는 HTTP 프로토콜을 사용하여 클라이언트와 서버가 데이터를 주고받음.
HTTP 메서드(GET, POST 등)를 통해 데이터 요청과 전송을 수행하며, Django는 이러한 HTTP 요청과 응답을 관리하는 여러 기능을 제공함.
활용 예시:
# views.py
from django.http import HttpResponse
def hello_world(request):
return HttpResponse("Hello, World!")
위의 코드처럼 Django는 간단하게 HTTP 응답을 반환하는 기능을 제공함.
3. Session
세션(Session) 은 사용자의 로그인 상태와 같은 정보를 서버 측에서 관리하기 위해 사용됨.
Django는 기본적으로 세션 관리를 지원하여, 사용자의 상태 정보를 쉽게 저장하고 접근할 수 있게 해줌.
이를 통해 사용자가 로그인한 상태를 유지하거나, 특정 페이지에 접근 권한을 부여할 수 있음.
활용 예시:
# views.py
def set_session(request):
request.session['user'] = 'John Doe'
return HttpResponse("Session data set.")
def get_session(request):
user = request.session.get('user', 'Guest')
return HttpResponse(f"Hello, {user}")
위 코드에서는 세션에 'user'라는 데이터를 저장하고 이를 불러오는 예시를 보여줌.
4. Cookie
쿠키(Cookie) 는 사용자의 브라우저에 데이터를 저장하여 세션 정보와 개인 설정을 유지하는 데 사용됨.
Django는 쿠키를 설정하고 관리하는 기능을 제공하며, 이를 통해 사용자의 특정 정보를 클라이언트에 저장할 수 있음.
세션과 함께 사용하여 사용자 식별이나 로그인 상태 유지에 주로 활용됨.
활용 예시:
# views.py
def set_cookie(request):
response = HttpResponse("Cookie set.")
response.set_cookie('favorite_color', 'blue')
return response
def get_cookie(request):
favorite_color = request.COOKIES.get('favorite_color', 'Unknown')
return HttpResponse(f"Favorite color: {favorite_color}")
위 코드에서는 'favorite_color'라는 쿠키를 설정하고 이를 불러오는 예시를 보여줌.
5. Middleware
미들웨어(Middleware) 는 Django에서 요청과 응답 사이에 위치하여 다양한 기능을 수행하는 구성 요소임.
요청이 들어오거나 응답이 나가기 전에 실행되며, 인증, 로깅, 보안 등을 담당할 수 있음.
Django에서는 미들웨어를 설정하여 요청 흐름을 중간에서 제어할 수 있는 유연성을 제공함.
활용 예시:
# custom_middleware.py
from django.utils.deprecation import MiddlewareMixin
class CustomMiddleware(MiddlewareMixin):
def process_request(self, request):
print("Custom Middleware: Request processed")
def process_response(self, request, response):
print("Custom Middleware: Response processed")
return response
위 코드처럼 커스텀 미들웨어를 정의하여 요청과 응답을 가로채는 기능을 구현할 수 있음.
6. Security
Django는 보안(Security) 에 있어서 강력한 기능을 내장하고 있음.
CSRF 방지, XSS 방지, SQL 인젝션 방어 등 다양한 보안 기능을 기본적으로 제공하여 안전한 웹 애플리케이션을 개발할 수 있도록 함.
Django의 보안 설정을 적절히 활용하면 데이터 보호와 사용자 신뢰성을 높일 수 있음.
활용 예시:
Django 설정 파일(settings.py
)에서 보안 관련 설정을 강화할 수 있음.
# settings.py
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
위와 같은 설정으로 CSRF 및 세션 쿠키의 보안을 강화할 수 있음.
7. ORM - Relationship
Django의 ORM (Object-Relational Mapping) 을 통해 데이터베이스의 테이블 간 관계를 정의하고 관리할 수 있음.
ORM은 일대일, 일대다, 다대다 관계를 지원하여 복잡한 데이터 구조를 효과적으로 처리함.
코드로 데이터베이스 구조를 관리하기 때문에 유지보수와 확장성이 용이함.
활용 예시:
# models.py
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
위 코드에서는 Author
와 Book
모델 간의 관계를 설정하여, 작가와 책의 관계를 ORM을 통해 관리할 수 있음.
어려웠던 내용
- 양이 많다.
궁금한 내용과 부족한 내용
- Docker Docker..
느낀 점
- 재미있다.
'TIL > 2024.11' 카테고리의 다른 글
[TIL] 2024-11-13 (Django Restframework/ngrok) (2) | 2024.11.13 |
---|---|
[TIL] 2024-11-11 (Django/Docker) (2) | 2024.11.12 |
[TIL] 2024-11-09 (Django) (0) | 2024.11.10 |
[TIL] 2024-11-08(Django) (0) | 2024.11.09 |
[TIL] 2024-11-07 (EduTech/Django) (2) | 2024.11.08 |
배움에 즐거움을 느끼는 마네의 연구소입니다. 이미지 출처 : https://www.instagram.com/hoseobiiiiiii._.0410/
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!