Xây dựng chức năng gửi Email trong ứng dụng Django
Lâu lâu rồi mó mần lại Django đổi gió tý. Hôm nay tôi sẽ cùng các bạn thực hiện xây dựng chức năng gửi Email trong ứng dụng Django. Nào chúng ta cùng bắt đầu nhé. Let's go =)) Cài đặt project Trước hết chúng ta cần tạo 1 dự án django, và bạn có thể thực hiện điều đó bằng cách mở terminal lên và ...
Lâu lâu rồi mó mần lại Django đổi gió tý. Hôm nay tôi sẽ cùng các bạn thực hiện xây dựng chức năng gửi Email trong ứng dụng Django. Nào chúng ta cùng bắt đầu nhé. Let's go =))
Cài đặt project
Trước hết chúng ta cần tạo 1 dự án django, và bạn có thể thực hiện điều đó bằng cách mở terminal lên và gõ lệnh sau:
$ django-admin startproject plc_email (tên dự án mà bạn có thể tùy đặt)
Bây giờ chúng ta di chuyển vào thư mục dự án chúng ta vừa tạo
$ cd plc_email
Tạo mới 1 app
Tiếp đến chúng ta tạo 1 app mới bằng lệnh sau:
$ python manage.py startapp send_email
Với lệnh trên chúng ta đã tạo thêm 1 thư mục send_email trong thư mục của dự án
Chỉnh sửa cài đặt của project
Trong bước này bạn hãy mở file settings.py, tiếp đó bạn thiết lập các thông tin này cho đúng cấu hình của bạn mong muốn
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'
Trong khối INSTALLED_APPS bạn cần thêm dòng sau để sử dụng app send_email:
'send_email.apps.SendEmailConfig'
Sau khi thêm vào thì khối này có nội dung như sau:
INSTALLED_APPS = [ 'send_email.apps.SendEmailConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
Tiếp đến bạn thiết lập đường dẫn static file cho ứng dụng
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) STATIC_ROOT = 'staticfiles' STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), )
Tạo urls
Chỉnh sửa url trong thư mục plc_email giống như này:
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')), ]
Sau đó bạn tạo thêm file urls.py trong thư mục send_email với nội dung file:
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.index, name='index'), url(r'^success', views.success, name='success'), ]
Thêm Views
Đi đến file views.py trong thư mục send_email và sửa thành:
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! I am Phuc. """ send_mail('Welcome!', data, "PLC", [email], fail_silently=False) return render(request, 'success.html')
Thêm templates
Bây giờ chúng ta tạo thư mục templates trong thư mục send_email. Sau đó tạo 2 file index.html và success.html trong thư mục templates vừa tạo. Nội dung file index.html:
{% load staticfiles %} <!DOCTYPE html> <html> <head> <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link type="text/css" rel="stylesheet" href="{% static 'css/style.css' %}" media="screen,projection"/> </head> <body> <nav> <div class="nav-wrapper container"> <a href="{% url 'index' %}" class="brand-logo">Django</a> </div> </nav> <div class="container login-f"> <div class="row"> <form class="col s12 m6 offset-m3" action="/success" id="form" method="POST"> {% csrf_token %} <div class="card blue-grey darken-1"> <div class="card-content white-text"> <span class="card-title">Signup for Newsletter</span> <div class="input-field col s12"> <input id="email" type="email" name="email" class="validate"> <label for="email">Email</label> </div> <div class="col s12"> <input type="checkbox" class="filled-in" name="checkbox" id="test5" /> <label for="test5">Welcome Email</label> </div> </div> <div class="card-action"> <button type="submit"> SignUp </button> </div> </div> </form> </div> </div> <footer class="page-footer"> <div class="footer-copyright"> <div class="container">© 2016 Copyright PLC </div> </div> </footer> </body> </html>
Nội dung file success.html:
{% load staticfiles %} <!DOCTYPE html> <html> <head> <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link type="text/css" rel="stylesheet" href="{% static 'css/style.css' %}" media="screen,projection"/> <meta name="viewport" content="awidth=device-awidth, initial-scale=1.0"/> </head> <body> <nav> <div class="nav-wrapper container"> <a href="{% url 'index' %}" class="brand-logo">Django</a> </div> </nav> <div class="container login-f"> <div class="row"> <div class="col s12 m6 offset-m3"> <div class="card-panel teal"> <span class="white-text">Thank you very much! We have sent you a welcome email. <br> <br> PLC </span> </div> </div> </div> </div> <footer class="page-footer"> <div class="footer-copyright"> <div class="container">© 2016 Copyright PLC </div> </div> </footer> </body> </html>
Chạy thử thôi!
Giờ thì chạy thử thôi nào =))
$ python manage.py makemigrations $ python manage.py migrate $ python manage.py runserver
Vậy là chúng ta đã xây dựng xong chức năng gửi email trong ứng dụng Django. Hẹn gặp lại các bạn vào bài blog tiếp nhé.
Happy coding!