Рассказывает yasoob008
Недавно у меня появилась необходимость создать приложение на Django, которое бы позволило пользователям оставлять адреса своей электронной почты и получать приветственное письмо в ответ. Проект получилось реализовать за несколько часов, большая часть времени ушла на тестирование пользовательского интерфейса. В этой статье я покажу, как сделать такое простое приложение на Django.
В этом руководстве мы будем использовать Gmail.
Создание проекта
Для начала создадим проект Django. Введем следующую команду в терминале:
django-admin startproject gci_email
Теперь переместимся в папку с новым проектом:
cd gci_email
Создание нового приложения
Теперь нам необходимо создать новое приложение. Запустим следующую команду, которая создаст папку send_email
с несколькими файлами внутри нашего проекта:
python manage.py startapp send_email
Изменение настроек проекта
Теперь немного изменим настройки проекта. Мы добавим наше приложение и всю информацию, связанную с рассылкой писем в файл settings.py
. Добавим следующие данные:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'Your gmail email'
EMAIL_HOST_PASSWORD = 'Your gmail password'
DEFAULT_FROM_EMAIL = 'Your name'
DEFAULT_TO_EMAIL = 'Your email'
В разделе файла INSTALLED_APPS
необходимо добавить следующую строку в список:
'send_email.apps.SendEmailConfig'
Теперь наш файл настроек должен содержать следующий список:
INSTALLED_APPS = [
'send_email.apps.SendEmailConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Также добавим туда следующий код:
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
Создание URL
Изменим файл urls.py
в папке gci_email
:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('send_email.urls')),
]
Теперь создадим файл urls.py
в папке send_email
и добавим туда следующий код:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^success', views.success, name='success'),
]
Добавление файлов отображения
Нам необходимо изменить файл views.py
в папке send_email
:
from django.shortcuts import render
from django.http import HttpResponse
import django
from django.conf import settings
from django.core.mail import send_mail
def index(request):
return render(request, 'index.html')
def success(request):
email = request.POST.get('email', '')
data = """
Hello there!
I wanted to personally write an email in order to welcome you to our platform.\
We have worked day and night to ensure that you get the best service. I hope \
that you will continue to use our service. We send out a newsletter once a \
week. Make sure that you read it. It is usually very informative.
Cheers!
~ Yasoob
"""
send_mail('Welcome!', data, "Yasoob",
[email], fail_silently=False)
return render(request, 'success.html')
Добавление шаблонов
Теперь нам необходимо создать папку templates
внутри send_email
, а в ней 2 файла: index.html
и success.html
.
В файле index.html
надо создать форму для ввода почты. Файл success.html
не должен содержать ничего особого.
Вот и всё. Теперь мы можем создать миграции, затем применить их и запустить проект:
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
Исходный код можно посмотреть на странице автора на GitHub.
Перевод статьи «Implementing Email Sending Functionality in a Django App»