1. 程式人生 > >django註冊賬號時完成郵箱啟用功能

django註冊賬號時完成郵箱啟用功能

目標:完成傳送郵件的任務,讓使用者完成啟用的步驟

需要模組:
#傳送郵件
#from django.core.mail import send_mail
#加密解密
#from itsdangerous import TimedJSONWebSignatureSerializer as TJS

######傳送連結部分######
#views.py中

#匯入settings.py來讀取其中設定的一些變數
import huasheng.settings
#匯入itsdangerous模組來實現加密與解密功能,
#若重新整理網頁發現錯誤未找到modelitsdangerous,請先安裝此模組(虛擬環境中輸入pip install itsdangerous)
from itsdangerous import TimedJSONWebSignatureSerializer as TJS
#匯入send_mail函式實現傳送郵件功能
from django.core.mail import send_mail
#建立變數接受TJS(金鑰),金鑰可從settings中匯入,可自行修改
 ts = TJS(huasheng.settings.SECRET_KEY)
#進行加密操作
trans = ts.dumps(user_name)
#得到byte型別資料,通過decode解碼
trans=trans.decode()
#定義send_mail所需變數
subject = '這是我的花生二手車專案'
#傳送html格式檔案時使用html_message接收,區分於message
#拼接字串已達到傳入網址的目的,加密的使用者名稱拼接在http://127.0.0.1:8000/user/active/之後以便接收後進行處理
#務必在開頭加上http://,使使用者在郵箱點選連結後能順利跳轉
html_message = "<a href='http://127.0.0.1:8000/user/active/"+trans+"'>這是啟用郵件</a>"
#message為空,recipient_list中傳入之前輸入的email
send_mail(subject=subject,message='',from_email='輸入傳送郵件的郵箱',recipient_list=[email],html_message=html_message)
# send_mail(subject, message, from_email, recipient_list,
#           fail_silently=False, auth_user=None, auth_password=None,
#           connection=None, html_message=None):
#未寫預設值的記得傳參,auth_user=None, auth_password=None時會從settings.py中匯入EMAIL_HOST_USER和EMAIL_HOST_PASSWORD

#在郵箱中開啟smtp並設定授權碼

#setting.py中設定引數

#郵箱配置
#郵箱驗證配置
EMAIl_BACKEND ='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.126.com'
#埠
EMAIL_PORT = 25
#傳送郵箱
EMAIL_HOST_USER = '輸入發件郵箱'
#授權碼
EMAIL_HOST_PASSWORD = '輸入授權碼'
DEFAULT_FROM_EMAIL = '花生二手車<輸入發件郵箱>'

######接收連結並激活######
#url中修改正則使其匹配到需要操作
#url中傳參操作如下

url(r'active/(.+)',views.ActiveView.as_view(),name='active')

#views.py中建立對應的類,繼承自View

class ActiveView(View):

#設定get方法,記得傳入request請求以及正則匹配到的字元兩個引數
def get(self,request,userinfo):
#接收settings.py中的金鑰
        ts = TJS(huasheng.settings.SECRET_KEY)
#對密文進行解碼
        user_name = ts.loads(userinfo)
#解密後找到對應的使用者名稱 
       user = User.objects.get(username=user_name)
#將對應使用者的is_active設定為1(啟用)
        user.is_active = 1
#儲存修改
        user.save()
#網頁返回成功資訊
        return HttpResponse('啟用成功')