1. 가상환경 및 django 프레임워크 설치
먼저 빈 폴더를 생성 후, 가상환경을 생성한다.
(virtualenv 미설치한 경우)
$ pip install virtualenv
virtualenv 다운
이미 설치가 되어 있다면 아래 코드를 실행해 가상환경 생성
$ virtualenv venv
$ source venv/Scripts/activate
$ which python
which python 으로 가상환경 여부 확인
$ pip install django
가상환경에 접속해 있다면 django 설치
2. Django 프로젝트 및 앱 생성
$ django-admin startproject djangogmail
djangogmail 프로젝트 생성
$ cd djangogmail/
프로젝트 디렉토리로 이동
$ python manage.py startapp main
‘main’ 앱 생성
$ code .
용이한 코드 편집을 위해, 현 경로에서 VS Code 실행
INSTALLED_APPS 부분에서 'main'
(+ 추가)
터미널을 키고, 프로젝트 상위 폴더에서 (/venv) 가 있는 경로에서 python 가상환경 생성 후 다시 프로젝트 폴더(/djangogmail)로 들어가서
$ python manage.py runserver
서버 실행
3. 구글에서 앱 비밀번호 생성
구글 보안이 강화되어서 앱 비밀번호를 통해 Gmail을 보낼 때, 2단계 인증 설정이 필요하다.
실습을 위해 임시 저장하고 실습 후에는 앱 비밀번호 제거 권장!
4. Email 사이트 설정
# Email Settings
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = '구글 이메일@gmail.com'
EMAIL_HOST_PASSWORD = '앱 비밀번호'
빈공간 찾아 (+ 추가)
EMAIL_HOST_USER = '구글 이메일@gmail.com'
EMAIL_HOST_PASSWORD = '앱 비밀번호'
위 두 줄은 이메일을 보낼 때 필요한 로그인 정보를 넣어주면 된다.
import 부분
include
(+ 추가)
urlpatterns 부분
path('', include('main.urls'))
(+ 추가)
djangogmail > main에 ‘templates\main’ 이중 폴더 생성, 그 후, 안에 ‘index.html’ 파일 생성
* 실제 경로: djangogmail > main > templates > main > index.html
<!DOCTYPE html>
<html lang="ko">
<head>
<title>Gmail using Django</title>
</head>
<body>
<div style="text-align:center;">
<h4> 연락 정보 </h4>
<form method="POST" action="{% url 'index' %}">
{% csrf_token %}
<input type="text" name="name" placeholder="이메일 제목" required>
<br>
<br>
<input type="email" name="email" placeholder="이메일 주소" required>
<br>
<br>
<textarea name="message" placeholder="메시지 입력" required></textarea>
<button type="submit">전송</button>
</form>
</div>
</body>
</html>
(+ 추가)
djangogmail > main > urls.py 파일생성
# -*- coding: UTF-8 -*-
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
(+추가)
name='index'
index.html 파일의 action 태그 속성에 있는 index를 의미
from django.shortcuts import render
from django.http import HttpResponse
from django.core.mail import send_mail
from django.conf import settings
# Create your views here.
def index(request, ):
if request.method == "POST":
message = request.POST['message']
email = request.POST['email']
name = request.POST['name']
send_mail(
name,
message, # 메시지
'settings.EMAIL_HOST_USER',
[email]
)
return render(request, 'main/index.html')
메일 보내기 기능을 하는 index 함수를 (+추가)
5. Test
$ python manage.py runserver
메일을 전송할 수 있는 사이트 생성
'# Coding > Django' 카테고리의 다른 글
Django의 MTV 패턴 (MVC 패턴과 비교) (0) | 2023.08.21 |
---|---|
Django로 엑셀파일 계산 페이지 만들기 (계산 기능 구현) (0) | 2023.08.12 |
Django로 엑셀파일 계산 페이지 만들기 (로그인 기능 구현) (0) | 2023.08.12 |
Django To-do List 사이트 생성 (2) (0) | 2023.07.27 |
Django To-do List 사이트 생성 (1) (0) | 2023.07.26 |