Django 웹사이트를 개발하다 보면 데이터베이스, 캐시, 스토리지 등의 상태를 손쉽게 점검할 수 있는 전용 URL 엔드포인트가 필요한 경우가 있습니다. 이럴 때 서드파티 패키지를 활용하면 시스템 성능과 각종 리소스의 상태를 실시간으로 모니터링할 수 있으며, 운영 환경(프로덕션)에서도 시스템 점검이 가능합니다.이 글에서는 django-watchman 패키지를 사용하여 시스템 상태를 확인해 주는 URL 엔드포인트를 만드는 방법을 단계별로 살펴보겠습니다.구현 예제1. 기본 설정 완료먼저 Django 프로젝트에서 앱 등록 및 URL 라우
이 글에서는 Django에서 모델 데이터를 .csv 형식으로 내보내는 방법을 소개합니다. 실무에서는 모델 데이터를 .csv, json, .xlsx 등 다양한 형식으로 내보내 후속 작업이나 보고서 작성에 활용해야 하는 경우가 종종 있습니다. 직접 스크립트를 작성하는 방법도 있지만, 여기서는 훨씬 더 간편한 방법을 알려드리겠습니다. Django 프로젝트를 생성하고 앱을 추가한 뒤, urls를 설정하고 INSTALLED_APPS에 앱을 등록하는 등 기본적인 환경 설정을 먼저 마쳐 주세요. 그다음 모델을 생성합니다. 이번 예제에서는 v
이 글에서는 Django 폼(form)에서 위젯(widget)을 사용하는 방법을 알아봅니다. 위젯은 프론트엔드 화면을 한층 더 보기 좋게 만들어 주는 강력한 도구입니다. 위젯이란 Django 폼이 렌더링하는 HTML 요소를 의미하며, textarea, input, password input 등이 모두 위젯에 해당합니다. 프로젝트 준비하기 먼저 Django 프로젝트와 앱을 생성합니다. 여기서는 프로젝트 이름을 tutorial14, 앱 이름을 djangoFormWidget으로 지정했습니다. 이후 settings.py에 앱을 등록하
이 글에서는 Django로 POST 요청을 받을 때, 해당 요청이 어느 IP 주소에서 들어왔는지 확인하는 방법을 알아보겠습니다. 웹 서비스를 운영하다 보면 보안 관리를 위해 클라이언트의 IP를 추적해야 하는 경우가 종종 있습니다. 예를 들어 특정 IP를 차단하거나, 하나의 IP에서 과도한 요청이 발생하는지 모니터링해야 할 때가 그렇습니다. 다행히 서드파티 패키지를 활용하면 이 작업을 아주 간단하게 처리할 수 있습니다.사전 준비먼저 Django 프로젝트와 앱을 생성하고, urls 설정 등 기본적인 환경 구성을 마쳐야 합니다. 앱을 생
많은 개발자 웹사이트에서 GitHub 소셜 로그인 기능을 쉽게 찾아볼 수 있습니다. 사용자 입장에서도 회원가입 절차 없이 클릭 한 번으로 로그인할 수 있어 매우 편리합니다. 이 글에서는 django-allauth 라이브러리를 활용해 Django 웹사이트에 GitHub OAuth 인증을 추가하는 방법을 단계별로 살펴보겠습니다.1단계: GitHub OAuth 애플리케이션 등록먼저 https://github.com/settings/developers/에 접속하여 새로운 OAuth 애플리케이션을 생성하고, 아래 두 개의 URL을 등록합니다
수많은 개발자 웹사이트에서는 회원가입 절차 없이 간편하게 로그인할 수 있도록 구글 소셜 인증을 지원하고 있습니다. 이 글에서는 Django 프로젝트에 구글 로그인 기능을 구현하는 방법을 단계별로 자세히 알아보겠습니다. 구글 클라우드 콘솔 설정 먼저 Google API Console 대시보드에 접속해 새 프로젝트를 생성합니다. OAuth 동의 화면(OAuth consent screen) 메뉴로 이동해 동의 화면을 생성한 후 저장하고 다음 단계로 진행합니다. 사용자 인증 정보(Credentials) 메뉴에서 사용자 인증 정보 만들기
Django로 웹 애플리케이션을 개발하다 보면 하나의 함수 또는 뷰(View) 안에서 여러 개의 폼을 동시에 처리해야 하는 경우가 자주 발생합니다. 이 글에서는 하나의 뷰에서 두 개의 폼을 동시에 다루는 방법을 예제와 함께 살펴보겠습니다. 이 기법은 실무에서 매우 유용하며, 원리를 이해하면 세 개 이상의 폼도 손쉽게 확장할 수 있습니다.사전 준비: 프로젝트 및 앱 설정먼저 Django 프로젝트와 앱을 생성합니다. 여기서는 프로젝트 이름을 multipleFormHandle, 앱 이름을 formhandlingapp으로 지정했습니다.이후
Material Design은 개발자들 사이에서 가장 인기 있는 디자인 템플릿 중 하나입니다. 일반적으로 프론트엔드에서 CDN 방식으로 사용되며, 깔끔하고 직관적인 UI를 손쉽게 구현할 수 있도록 도와줍니다. 이 글에서는 Material Design을 Django의 폼 위젯(form widget)에 적용하고, 뷰(view)를 통해 해당 폼을 화면에 렌더링하는 방법을 단계별로 살펴보겠습니다.django-material이란?django-material은 CDN 없이도 렌더링되는 HTML 파일이나 폼 위젯에 자동으로 Material De
django-downloadview 패키지를 사용하면 Django 프로젝트에 있는 어떤 파일이든 손쉽게 다운로드 가능한 형태로 제공할 수 있습니다. 서버에 업로드된 파일들을 그대로 호스팅하면서 사용자에게 다운로드 링크를 제공하는 것이죠.이 글에서는 Django 프로젝트에서 파일을 다운로드할 수 있도록 만드는 방법을 단계별로 알아보겠습니다.1. 패키지 설치먼저 아래 명령어로 django-downloadview 패키지를 설치합니다.pip install django-downloadview그다음 Django 프로젝트와 앱을 생성하고, 기본
이 글에서는 Django에서 객체의 데이터 변경 이력을 추적하고, 삭제된 데이터를 손쉽게 복구하는 기능을 구현하는 방법을 알아봅니다. Reversion(되돌리기)은 삭제된 모델 데이터를 다시 가져오는 것을 의미하며, 클릭 한 번으로 삭제된 모든 데이터를 복구할 수 있을 뿐만 아니라 각 모델 객체의 변경 이력까지 추적해 줍니다. django-reversion 설치 및 설정 먼저 Django 프로젝트와 앱을 생성한 뒤, settings.py의 INSTALLED_APPS에 해당 앱을 등록합니다. 그다음 urls.py를 설정하고 djang
이 글에서는 JSON 형식의 데이터를 Django 모델로 가져오는 방법을 살펴봅니다. django-import-export 라이브러리를 활용하면 JSON뿐만 아니라 CSV, XLSX, YML 등 다양한 형식의 데이터도 손쉽게 모델에 가져오거나 내보낼 수 있습니다. 사전 준비 먼저 Django 프로젝트와 앱을 생성하고, URL을 설정하는 등 기본적인 환경 구성을 마칩니다. 이때 생성한 앱을 INSTALLED_APPS에 반드시 추가해야 합니다. 이번 예제에서는 views.py, urls.py, HTML 템플릿 파일은 다루지 않습니다.
Django에서 연락처 폼(contact form)은 생각보다 간단하게 만들 수 있지만, 폼(forms)과 뷰(views), 모델(models)을 일일이 작성하고 Admin에 모델을 등록하는 등 손봐야 할 것이 많습니다. 이 글에서는 미리 만들어진 패키지를 활용해 이런 번거로운 과정을 생략하고, 연락처 폼의 데이터를 사전에 정의된 모델에 바로 저장하는 방법을 소개합니다. 여기서 만들 연락처 폼은 models.py나 views.py에 코드를 한 줄도 작성하지 않고, HTML 폼 마크업도 직접 만들지 않은 채 데이터를 모델에 저장합니
파이썬의 Pickle은 파이썬 객체 구조를 직렬화(Serialization)하고 역직렬화(Deserialization)하는 데 주로 사용됩니다. 즉, 파이썬 객체를 바이트 스트림(byte stream)으로 변환하여 파일이나 데이터베이스에 저장하거나, 세션 간 프로그램 상태를 유지하거나, 네트워크를 통해 데이터를 전송하는 과정입니다.이 글에서는 pickle 객체를 저장할 수 있는 Django 필드를 만드는 방법을 알아보겠습니다. 여기서는 models.py와 Django 셸만 사용합니다.먼저 django-picklefield 패키지를
이 글에서는 버튼을 클릭할 때마다 숫자가 1씩 증가하고, 탭을 닫았다가 다시 열어도 세션 덕분에 값이 그대로 유지되는 아주 간단한 카운터 앱을 만드는 방법을 알아봅니다. 이 예제를 따라 하다 보면 Django 세션(Session)의 기본 개념과 함께, 뷰와 템플릿 사이에서 세션으로 데이터를 저장하고 전달하는 방법까지 자연스럽게 익힐 수 있습니다. 1. urls.py – 홈 URL에 뷰 연결하기 먼저 앱의 urls.py에 다음 코드를 추가해 홈 주소에 뷰를 연결합니다. from django.urls import path from .
이 글에서는 Django로 URL 단축(URL Shortener) 앱을 만드는 방법을 단계별로 살펴봅니다. 이 앱은 사용자가 입력한 긴 URL을 짧은 URL로 변환해 주는 간단한 도구입니다. 특히 Django 전용 라이브러리가 아닌 범용 Python 라이브러리를 사용하기 때문에, 이 코드는 다른 어떤 Python 프로젝트에서도 그대로 재사용할 수 있다는 장점이 있습니다. 먼저 Django 프로젝트와 앱을 생성한 뒤, settings.py의 INSTALLED_APPS에 해당 앱을 등록하고 프로젝트의 urls.py에 앱의 URL 설정
캡차(Captcha)는 현대 웹사이트에서 사용자 검증을 위해 가장 널리 사용되는 방법 중 하나입니다. 봇이나 악성 트래픽을 차단하는 데 매우 효과적이어서 수많은 웹사이트가 이를 활용하고 있습니다. Google reCAPTCHA를 사용할 수도 있지만, 설정 과정이 다소 번거로울 수 있습니다. 다행히 Django에서는 django-simple-captcha라는 라이브러리를 통해 훨씬 간단한 방법으로 캡차를 구현할 수 있습니다.이 글에서는 Django 웹사이트에 캡차를 만들고 적용하는 방법을 단계별로 알아보겠습니다.구현 예제먼저 Djan
폼이나 데이터베이스에 위치 정보를 담는 필드를 추가해야 할 때 CharField를 사용할 수도 있지만, 이는 그다지 좋은 방법이 아닙니다. Django에는 국가 필드를 손쉽게 구현할 수 있게 해주는 서드파티 패키지인 django-countries가 있습니다. 이 글에서는 django-countries를 활용해 Django에 국가(Country) 필드를 추가하는 방법을 단계별로 살펴보겠습니다. 사전 준비 먼저 Django 프로젝트와 앱을 생성합니다. 그다음 앱을 INSTALLED_APPS에 등록하고 URL 설정을 마쳐주세요. 이제 d
Django DeleteView란? DeleteView는 Django에서 기본으로 제공하는 제네릭 뷰(Generic View) 중 하나로, 웹 프론트엔드에서 모델 데이터를 손쉽게 삭제할 수 있도록 도와주는 기능입니다. 별도의 복잡한 로직 없이 몇 줄의 코드만으로 적용할 수 있는 내장 뷰이며, 동작 방식은 Django 관리자 페이지(admin)에서 객체를 삭제할 때와 유사합니다. 실무 프로젝트에서 데이터 삭제 기능을 빠르게 구현해야 할 때 특히 유용합니다. 이 글에서는 DeleteView를 활용해 학생(Student) 정보를 삭제하는
Django로 개발한 웹사이트에 1000000처럼 긴 숫자가 그대로 노출되면 다소 기계적인 인상을 줍니다. 이럴 때 유용한 것이 바로 django.contrib.humanize입니다. humanize는 Django가 기본으로 제공하는 템플릿 필터 모음으로, 데이터를 사람이 읽기 쉬운 형태로 바꿔 프로젝트에 인간다운 감성을 더해 줍니다. humanize 필터를 사용하면 숫자를 단어로 변환하거나, 천 단위마다 콤마를 삽입하거나, 큰 숫자를 백만(million)·십억(billion) 단위로 축약해 표시할 수 있습니다. 지금부터 실제 예제
필터는 Django 개발에서 정말 유용한 기능입니다. Django에는 다양한 내장 필터가 제공되며, 필요에 따라 직접 커스텀 필터를 만들어 프로젝트의 어떤 템플릿 파일에서든 자유롭게 사용할 수 있습니다. 필터는 HTML에서 소문자를 대문자로 변환하는 것처럼 데이터를 원하는 형태로 가공할 때 활용됩니다. 이 글에서는 Django에서 커스텀 템플릿 필터 태그를 만드는 방법을 단계별로 알아보겠습니다. 예제: 프로젝트 기본 설정 먼저 Django 프로젝트와 앱을 생성합니다. 그다음 앱의 루트 디렉터리에 templates 폴더와 templ