1. 程式人生 > >Django幕學專案中郵箱註冊Register註冊新浪郵箱時,能註冊成功,但是郵箱接收不到郵件的問題

Django幕學專案中郵箱註冊Register註冊新浪郵箱時,能註冊成功,但是郵箱接收不到郵件的問題

視訊教程上使用者註冊功能view的程式碼是:

class RegisterView(View):
    # get方法直接返回頁面
def get(self, request):
        register_form = RegisterForm()  # 新增驗證碼
return render(request, 'register.html', {'register_form': register_form})

    def post(self, request):
        register_form = RegisterForm(request.POST)  # 獲取驗證例項化
if register_form.is_valid(): user_name = request.POST.get('email', '') # 如果使用者名稱已經存在,則提示錯誤資訊 if UserProfile.objects.filter(email=user_name): return render(request, 'register.html', {'register_form': register_form, 'msg': '使用者已存在'}) pass_word = request.POST.get('password'
, '') # 例項化一個user_profile物件,將前臺值存入 user_profile = UserProfile() user_profile.username = user_name user_profile.password = pass_word user_profile.is_active = False # 郵箱啟用,預設為沒有啟用 # 對password進行加密並儲存 user_profile.password = make_password(pass_word) user_profile.save() # 傳送郵件
send_register_email(user_name, 'register') return render(request, 'login.html') # 傳送成功後跳轉到登入頁面 else: # 失敗的話重新回到註冊頁面,重新進行註冊 return render(request, 'register.html', {'register_form': register_form})

其中例項化一個user_profile物件,將前臺值存入用的是user_profile.username = user_name.如果這樣用,郵箱則收不到啟用郵件,同時在註冊的時候,也無法通過

if UserProfile.objects.filter(email=user_name):
    return render(request, 'register.html', {'register_form': register_form, 'msg': '使用者已存在'})

判斷郵箱是否已經註冊過了,在users 的app中的表時,採用了覆蓋原有表的方法,但是覆蓋後,表裡面依舊存在username和email兩個屬性(也有可能是匯入的庫版本不同,從而出現這種情況),用user_profile.username = user_name時,會把值傳入到UserProfile的username屬性中,而不是email屬性中,所以需要改為user_profile.email= user_name