많은 온라인 시험 응시 사이트에서는 텍스트 입력, 이미지 업로드 등을 위해 텍스트 편집기(Text Editor)를 활용합니다. 그중에서도 Quill 텍스트 편집기는 가장 널리 사용되는 에디터 중 하나로, 데이터베이스에 직접 저장할 수 있는 모델 필드(Model Field)까지 제공합니다. 따라서 에디터의 데이터를 DB에 저장하기 위해 별도의 복잡한 설정을 할 필요가 없다는 것이 큰 장점입니다.이번 글에서는 Django 프로젝트에서 Quill 기반 텍스트 편집기 필드를 만들고 활용하는 방법을 단계별로 살펴보겠습니다.1. 프로젝트 준비
UpdateView는 Django에서 기본으로 제공하는 제네릭 편집 뷰(Generic Editing View) 중 하나로, 프런트엔드 화면에서 모델 데이터를 손쉽게 수정할 수 있게 해주는 기능입니다. 복잡한 로직을 직접 작성하지 않아도 관리자(Admin) 페이지처럼 데이터를 업데이트하는 화면을 빠르게 구현할 수 있다는 점이 큰 장점입니다. 이번 글에서는 간단한 예제를 통해 Django에서 UpdateView를 적용하는 방법을 단계별로 살펴보겠습니다. 프로젝트 및 앱 준비하기 먼저 Django 프로젝트와 앱을 생성합니다. 이 글에서
모델 이력 추적(Model History Tracking)은 모델 객체에 발생한 변경 사항을 기록하는 기능입니다. 어떤 내용이 수정되었는지, 언제 삭제되었는지 등을 추적할 수 있으며, 실수로 삭제된 객체를 복구하는 데도 활용할 수 있습니다. 이 글에서는 django-simple-history 라이브러리를 사용해 Django에서 모델 객체의 변경 이력을 추적하는 방법을 예제와 함께 살펴보겠습니다.프로젝트 설정하기먼저 프로젝트, 앱, URL 그리고 모델을 기본적으로 구성해 둡니다.1. django-simple-history 설치다음 명
웹사이트를 개발하다 보면 특정 URL의 QR 코드를 생성해야 하는 경우가 종종 있습니다. QR 코드는 본인 인증, 웹사이트 로그인, 페이지 열기 등 다양한 용도로 스캔되며 활용 범위가 매우 넓습니다. 이 글에서는 Django를 사용해 qrgenerator 웹사이트를 구축하고 QR 코드를 생성하는 방법을 단계별로 살펴보겠습니다. 예제 먼저 Django 프로젝트와 앱을 생성합니다. 그다음 프로젝트 폴더 및 앱 폴더와 같은 위치에 media 폴더를 하나 만듭니다. 프로젝트 폴더 안의 settings.py 파일을 열어 INSTALLED_A
이 글에서는 Django에서 모델 데이터를 렌더링하는 테이블을 만드는 방법을 살펴보겠습니다. HTML의 <table> 태그를 일일이 작성하지 않아도, django_tables2라는 가벼운 Django 테이블 라이브러리를 사용하면 모델 데이터를 테이블 형태로 바로 출력할 수 있으며, 컬럼 정렬과 페이지 매김(페이징) 기능까지 기본적으로 제공됩니다. 예제 따라 하기 먼저 프로젝트와 앱을 생성하고 URL 설정을 마친 상태에서 시작합니다. 1. django_tables2 설치 다음 명령어로 패키지를 설치합니다. pip inst
이 글에서는 Django 프로파일링 환경을 구축하는 방법을 알아보겠습니다. 설정이 완료되면 특정 URL 엔드포인트에서 총 GET 요청 수, 데이터베이스 쿼리 등 웹사이트에 대한 다양한 리포트를 확인할 수 있습니다. 사이트가 실제 운영 중일 때는 여러 가지 지표를 지속적으로 점검해야 하기 때문에 프로덕션 환경에서 특히 유용합니다.실제 서비스를 배포하는 프로젝트를 진행할 때 활용도가 높은 자료이니 끝까지 따라와 보세요.프로젝트 준비하기먼저 Django 프로젝트와 앱을 생성하고, 기본 설정을 마친 후 URL을 구성합니다.그다음 djang
대부분의 웹사이트에서 소셜 공유 버튼을 쉽게 찾아볼 수 있습니다. 이러한 버튼은 전자상거래 사이트나 블로그, 제휴 마케팅 사이트에서 매우 중요한 역할을 합니다. 웹 개발자라면 누구나 자신의 웹사이트를 방문자들이 좋아하고, 방문자들이 소셜 미디어를 통해 자발적으로 사이트를 널리 알려주기를 바랄 것입니다.이 글에서는 Django를 활용해 자동화된 웹사이트 소셜 공유 버튼을 만드는 방법을 단계별로 살펴보겠습니다.실습 예제1. 프로젝트 및 앱 생성먼저 Django 프로젝트와 앱을 생성합니다.2. django-social-share 패키지
Djoser는 Django를 위한 간단하고 실용적인 인증 라이브러리입니다. 별도의 뷰(View) 코드를 작성하지 않고도 인증용 토큰을 손쉽게 발급할 수 있으며, 토큰은 username(사용자 이름), email(이메일), password(비밀번호) 세 가지 필드를 기반으로 생성됩니다. Djoser는 POST 요청에서만 동작하지만, 필요하다면 프론트엔드를 직접 연결해 확장할 수도 있습니다.예제 프로젝트 만들기먼저 Django 프로젝트와 앱을 생성합니다. 이 글에서는 프로젝트 이름을 "DjoserExample", 앱
문제 개요체스판과 특수한 나이트 말 K가 하나 있다고 가정해 봅시다. 이 말은 체스판 위에서 L자 모양으로 움직입니다. 말이 (x1, y1) 위치에 있을 때 (x2, y2)로 이동한다면, 그 움직임은 다음과 같이 표현할 수 있습니다.x2 = x1 ± a ; y2 = y1 ± b 또는 x2 = x1 ± b ; y2 = y1 ± a (단, a와 b는 정수)우리가 구해야 할 것은 이 체스 말이 (0, 0) 위치에서 출발하여 체스판의 (n-1, n-1) 위치에 도달하기 위해 필요한 최소 이동 횟수입니다. 어떤 위치가 도달할 수 없다면 -1
문제 이해하기 미로에 갇힌 게임 상황을 생각해 봅시다. 우리는 미로에서 빠져나갈 출구를 찾아야 합니다. 미로는 n행 m열 크기의 행렬로 표현되며, 각 칸에는 다음 네 가지 기호 중 하나가 들어 있습니다. O — 막힌 경로(지나갈 수 없음) D — 미로의 출구 S — 플레이어의 시작 위치 - — 자유롭게 이동할 수 있는 통로 우리는 출구(D)를 향한 방향을 찾기 위해 나침반을 사용할 수 있지만, 나침반은 최대 k번까지만 사용할 수 있다는 제약이 있습니다. 미로 정보와 나침반 사용 가능 횟수가 주어졌을 때, 주어진 횟수 안에서 미로
개요리스트 안에 여러 개의 행(내부 리스트)이 있을 때, 두 요소의 합이 특정 키 값과 일치하는 쌍이 포함된 행만 골라내야 하는 경우가 있습니다. 이럴 때는 별도의 함수를 정의하여 각 행을 검사하고, 조건을 만족하는 행만 새로운 리스트로 추출하면 됩니다.아래 예제에서는 중첩 반복문을 사용해 한 행 내의 모든 요소 쌍을 확인하고, 그 합이 키 값과 같으면 True를 반환하는 방식으로 문제를 해결합니다.예제 코드def find_sum_pair(val, key): for index in range(len(val)
행렬(matrix)의 각 행을 특정 사용자 정의 리스트에 포함된 요소의 개수를 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때 리스트 컴프리헨션(list comprehension)과 len 메서드를 활용한 함수를 정의하면 손쉽게 해결할 수 있습니다.예제 코드def get_count_matrix(my_key): return len([element for element in my_key if element in custom_list]) my_list = [[31, 5, 22, 7], [85, 5], [9, 11, 22], [
튜플(tuple) 안에 리스트의 어떤 요소라도 포함되어 있는지 확인해야 하는 경우, 불리언(Boolean) 값과 간단한 반복문을 활용하면 손쉽게 해결할 수 있습니다.아래는 이를 구현한 예제입니다.예제my_tuple = (14, 35, 27, 99, 23, 89, 11) print(The tuple is :) print(my_tuple) my_list = [16, 27, 88, 99] print(The list is :) print(my_list) my_result = False for element in my_list:
문자열에서 특정 기준값 K보다 큰 문자, 즉 알파벳 순서상 뒤에 위치한 문자를 제거해야 하는 경우에는 간단한 반복문과 파이썬 내장 함수인 ord()(유니코드 표현을 반환)를 함께 사용하면 손쉽게 해결할 수 있습니다. ord()는 문자를 유니코드 정수 값으로 변환해 주는 함수로, 영문 소문자 a의 유니코드 값은 97입니다. 따라서 ord(문자) - 97을 계산하면 해당 문자가 알파벳에서 몇 번째 위치(0부터 시작)에 있는지 알 수 있고, 이 값을 기준값 K와 비교해 원하는 문자만 남기는 방식입니다. 아래는 실제 동작 예시입니다. 예제
행렬의 각 열에 있는 모든 요소가 고유한지(중복이 없는지) 검사해야 하는 경우, 간단한 반복문과 리스트 컴프리헨션(list comprehension), 그리고 set 연산자를 활용하면 손쉽게 해결할 수 있습니다.핵심 아이디어는 집합(set)은 중복을 허용하지 않는다는 특성을 이용하는 것입니다. 즉, 한 열을 집합으로 변환했을 때 길이가 줄어든다면 중복된 요소가 존재한다는 뜻입니다.아래는 실제 동작 예시입니다.예제 코드my_list = [[11, 24, 84], [24, 55, 11], [7, 11, 9]] print(The lis
행렬(matrix)에서 비어 있지 않은 행만 골라내야 하는 경우, 간단한 리스트 컴프리헨션(list comprehension)과 len 메서드를 함께 사용하면 손쉽게 해결할 수 있습니다.아래 예제를 통해 실제 동작 과정을 확인해 보겠습니다.예제 코드 0] print(The resultant list is :) print(my_result)실행 결과The list is : [[21, 52, 4, 74], [], [7, 8, 4, 1], [], []] The resultant list is : [[21, 52, 4, 74], [7,
2차원 리스트(리스트의 리스트)를 다루다 보면, 각 행에 포함된 요소들이 서로 같은 빈도로 나타나는지 확인해야 하는 경우가 있습니다. 이럴 때 파이썬에서는 all 함수, collections 모듈의 Counter 클래스, 그리고 간단한 반복 처리를 조합하면 손쉽게 해결할 수 있습니다.Counter는 리스트 내 각 요소의 등장 횟수를 딕셔너리 형태로 세어 주는 도구이므로, 두 행의 빈도 분포를 비교하는 데 매우 유용합니다. 아래에서 실제 예제를 통해 살펴보겠습니다.예제 코드from collections import Counter m
파이썬에서 문자열의 길이가 모두 짝수인 행(리스트)만 추출해야 하는 경우, 리스트 컴프리헨션(list comprehension)과 함께 all() 연산자와 나머지 연산자(%)를 활용하면 간단하게 해결할 수 있습니다.아래는 실제 동작 예시입니다.예제 코드my_list = [[python, is, best], [best, good, python], [is, better], [for, coders]] print(원본 리스트 :) print(my_list) my_result = [row for row in my_list if all(l
파이썬에서 특정 문자(불필요한 문자)를 포함하고 있는 문자열을 걸러내야 하는 경우, 리스트 컴프리헨션(list comprehension)과 any 연산자를 함께 사용하면 간단하게 해결할 수 있습니다.아래 예제를 통해 실제 동작 방식을 살펴보겠습니다.예제 코드my_list = [python, is, fun, to, learn] print(문자열 리스트 :) print(my_list) my_char_list = [p, s, l] print(제외할 문자 리스트 :) print(my_char_list) my_result = [sub
파이썬에서 문자열이 ASCII 범위 내에 포함되어 있는지 확인하거나 필터링해야 하는 경우가 종종 있습니다. 예를 들어, 외부 데이터를 처리할 때 한글이나 특수 유니코드 문자가 섞여 있는지 검증해야 할 때 유용합니다.이때 각 문자의 유니코드 코드 포인트를 구해주는 ord() 함수와 모든 요소가 조건을 만족하는지 검사하는 all() 내장 함수를 함께 사용하면 간단하게 해결할 수 있습니다.예제 코드my_string = Hope you are well print(The string is :) print(my_string) my_resu