【问题标题】:data is not saving mailvalidation in models数据未在模型中保存邮件验证
【发布时间】:2020-07-22 06:41:09
【问题描述】:

我正在创建带有电子邮件验证的注册页面,但我收到类型错误 mailvalidation() got an unexpected keyword argument 'user_id'

views.py

def signup(request):
if request.method=='POST':
    username=request.POST['username']
    email=request.POST['email']
    password=request.POST['password']
    cpassword=request.POST['cpassword']
    userdetails(name=username,email=email,password=password).save()
    user = userdetails.objects.get(email=email)
    token = default_token_generator.make_token(user)
    #print(user.id)
    #print(user.email)
    #print(user.name)
    #print(token)
    mailvalidation(user_id=user.id, user_email=user.email, user_name=user.name, key=token).save()
    sendmail(email, token)
    return HttpResponse('We have sent a email verification please check your email')
return render(request,'credentials/register.html')

models.py

class userdetails(models.Model):
    name=models.CharField(max_length=50)
    email=models.CharField(max_length=50)
    password=models.CharField(max_length=20)
    valid_email=models.IntegerField(default=0)
    last_login=models.DateTimeField(default=today)
    class Meta:
        db_table='user_details'

class mailvalidation(models.Model):
    user_id=models.IntegerField(default=0)
    user_email=models.EmailField(max_length=100)
    user_name=models.CharField(max_length=100)
    key=models.TextField()
    class Meta:
        db_table='mail_validation'

我收到一个错误

【问题讨论】:

    标签: django django-models django-views


    【解决方案1】:

    邮件验证中使用的user_id应该是ForeignKey

    所以,你可以改变这个

    user_id = models.IntegerField(default=0)

    user = models.ForeignKey(userdetails, on_delete=models.CASCADE)

    这里user 字段将被替换为user_id,因此无需向用户添加_id

    【讨论】:

    • 感谢您的回答 @Abhishek Patel 只是我将 mailvalidation 更改为 validationmail,它工作正常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 2017-11-21
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    相关资源
    最近更新 更多