Contents 1. 배경 지난 포스팅에서 django command를 이용해 메일을 보내봤습니다. ([Django] django command로 메일 보내기 기초 사용법(feat. naver mail)) 이번엔 HTML 템플릿을 활용해 보겠습니다. HTML에 예쁘게 메일을 작성하고, 제목, 내용만 django의 문자열 값을 받아서 rendering하여 메일을 발송해보겠습니다. 2. 해결 1) html template 찾기 및 저장 구글에서 무료 메일 html template을 검색해서 아래 템플릿을 찾았습니다. (github link: https://github.com/ColorlibHQ/email-templates/tree/master/10) 깃허브에서 해당 index.html을 복사하여 blog 하..
Contents 1. 배경 django에서는 commands 인터페이스를 제공해 줍니다. 이전 시간에 .env를 이용해 중요한 사항들을 따로 정리하는 방법을 알아보았습니다. (링크: [Django] .env(dotenv)파일 기초 사용법 (feat. naver smtp 메일 보내기)) 이를 바탕으로 Django에서 커맨드를 생성하고, 메일을 보내보는 실습을 해보겠습니다. 2. 해결 1) blog앱 내부에 managements/commands 디렉토리 생성 commands 폴더 내부에 command로 쓰고자 하는 명령어로 python 파일을 만들면 됩니다. 저는 send_mail이라는 명령어를 사용할 것이기 때문에, send_mail.py를 만들었습니다. (__init__.py는 해당 폴더가 파이썬 폴더임..
Contents 1. 배경 장고는 간편한 템플릿 시스템을 가지고 있습니다. 하지만, 스타일링은 따로 지원하지 않습니다. django-bootstrap5를 설치하고, 간단하게 적용해보겠습니다. 2. 해결 1) 설치 python -m pip install django-bootstrap5 저는 이미 설치해서 Requirement already satisfied라고 나옵니다. 2) settings.py INSTALLED_APPS에 "django_bootstrap5" 추가 3) base.html에 적용 // 불러오기 {% load django_bootstrap5 %} load를 통해 라이브러리 import 하듯이 불러올 수 있고, 아래 두줄을 통해 스타일을 적용할 수 있습니다. // 스타일 적용 {% bootst..
Contents 1. 배경 django를 사용하다 보면, API Key나 이메일 보내기 기능의 ID, Password 등의 정보를 시스템적으로 사용할 때가 있습니다. 보통 코드를 깃으로 관리하기 때문에 이런 중요정보가 코드 내부에 있으면 해킹당할 위험이 매우 높습니다. 그래서 django에서는 .env 파일을 이용해 이런 중요 정보를 환경 변수로 사용함으로써 보안을 유지합니다. 설치부터 기초 사용법까지 알아보겠습니다. 2. 해결 위 과정을 naver smtp 메일 보내는 기능을 추가하는 예시와 함께 알아보겠습니다. 1) 설치 python -m pip install django-environ 2) .env 파일 작성 주요 정보는 빨간색으로 가렸습니다. 참고로 .env파일은 깃허브에 올라가지 않도록, .gi..
Contents 1. 배경 장고에서는 user model은 디폴트로 authentication을 정말 잘 만들어서 제공해줍니다. username, id, First name, Last name, email, password, 가입 날짜, 마지막 로그인 날짜, admin 설정 등등을 기본으로 제공해줍니다. 그렇기 때문에 그냥 제공해주는 User Model을 써도 충분하지만 커스텀하는 방법에 대해 한번 알아보겠습니다. User 모델을 따로 만들고, admin 부분까지 커스텀을 진행해 보겠습니다. 2. 해결 1) python manage.py startapp users 저는 이름을 users로 했지만, 원하는데로 설정 가능합니다. 2) users app의 model.py AbstractUser을 상속받아 Us..
Contents 1. 배경 python manage.py startapp 으로 앱을 만들었다면, django settings.py에서 해당 app을 등록해야 합니다. INSTALLED_APPS라는 리스트에 작성함으로써 앱을 등록하는데요. 어떨 때는 app이름만 작성하고, 어떨때는 app이름.apps.Config 형식으로 작성합니다. 어떤 차이가 있을까요? 2. 해결 python manage.py startapp blog라는 앱을 만들었습니다. blog의 apps.py를 보면 아래와 같습니다. 상위에 BlogConfig라는 클래스가 있습니다. INSTALLED_APPS리스트에 "blog.apps.BlogConfig"를 등록하는 것은 정확히는 blog폴더의 apps.py의 BlogConfig 클래스를 등록한..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/12904 ) 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net B : 문자열 S ABBA : 문자열 T 아래와 같은 2가지 규칙을 지키며, 문자열 S를 문자열 T로 바꿀 수 있으면 1을, 바꿀 수 없으면 0을 출력하는 문제입니다. 문자열의 뒤에 A를 추가한다. 문자열을 뒤집고 뒤에 B를 추가한다. 첫 번째 예제에 대해 B가 ABBA가 되는 과정을 살펴보겠습니..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/12919 ) 12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net B : 문자열 S BABA : 문자열 T 아래와 같은 2가지 규칙을 지키며, 문자열 S를 문자열 T로 바꿀 수 있으면 1을, 바꿀 수 없으면 0을 출력하는 문제입니다. 문자열의 뒤에 A를 추가한다. 문자열의 뒤에 B를 추가하고 문자열을 뒤집는다. 첫 번째 예제에 대해 다음과 같은 과정을 거치면..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/1912) 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 10 : 수의 개수 10 -4 3 1 5 6 -35 12 21 -1 : 수의 개수만큼 수를 나열(띄어쓰기로 수를 구분) 수의 나열에 대해, 숫자를 연속으로 더할 때, 나올 수 있는 최댓값을 출력합니다. 2. 전체 코드 input() # n은 쓰지 않으니 그냥 input만 받기 s=[*map(int,input().split())] # 수열을 리스트..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/1463) 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 주어진 수 x에 대해, 아래 3가지 연산을 통해 1을 만듭니다. 이때, 연산을 사용하는 횟수의 최솟값을 출력합니다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 예제 입력 2번의 10을 보면, 10 -> 9 -> 3 -> 1로, 3번 연산이 최솟값입니다. 2. DP - BottomUp 풀이(for문 사용) x=int(input()) # 수 입력받기 d=[0]*(x+1) # 1-based for..
Contents 1. 문제 정의 및 예제 해석 (문제 링크: https://www.acmicpc.net/problem/2579) 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 6 : 아래 주어질 계단의 개수 10 : 첫 번째 계단의 점수 20 : 두 번째 계단의 점수 .. 20 : 마지막(6번째) 계단의 점수 이제 아래 3가지 규칙에 따라 계단을 오를 때, 최대 점수를 출력해야 합니다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음다음 계단으로 오를 수 ..
* 전체 코드 ### 정수 1개 입력받기 N = int(input()) ### 한줄 정수 리스트 입력받기 li = [*map(int,input().split())] ### 여러개 정수 입력받기 a,b,c = map(int,input().split()) ### 여러 줄의 정수 리스트 입력받기 n = int(input()) li = [int(input()) for _ in range(n)] ## n 없이 한 줄로 li = [int(input()) for _ in range(int(input()))] ### N행 배열 입력받기 #### 숫자인 경우 N=int(input()) # N개의 행 arr=[[*map(int,input().split())] for _ in range(N)] #### 문자열인 경우 N=i..