django註冊賬號時完成郵箱啟用功能
阿新 • • 發佈:2018-12-13
目標:完成傳送郵件的任務,讓使用者完成啟用的步驟
需要模組:
#傳送郵件
#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('啟用成功')