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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章