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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值