如何在django中将模型中的值传递给视图?

时间:2018-01-01 16:57:47

标签: python django

如何将 codeval 变量从 models.py 传递到 views.py

在models.py

from django.db import models  
from django.contrib.auth.models import User  
from django.db.models.signals import post_save  
import random  
from django.core.mail import send_mail        

class UserProfile(models.Model):  
    user = models.OneToOneField(User)  
    description = models.CharField(max_length=100, default='')  
    city = models.CharField(max_length=100, default='')  
    website = models.URLField(default='')  
    mobile = models.IntegerField(default=0)  
    code = models.IntegerField(default=0)        

def create_profile(sender, **kwargs):  
    if kwargs['created']:  
    user_profile = UserProfile.objects.create(user=kwargs['instance'])  
    codeval = random.randint(111111,999999)    
    user_profile.code = codeval  
    user_profile.save()  
    receiver = User.objects.get(id=user_profile.user_id).email  
    send_mail(' Confirm your account on Abolombon',   
        'Thanks for signing up with Abolombon! Your Abolombon verification code is:\n %s\n\n Thank you\nAbolombon.com'%(codeval),   
        'testpurpose2040@gmail.com',   
        [receiver])

post_save.connect(create_profile, sender=User)  
在views.py中

def verification(request, args=codeval):
    return render(request,'website/verification.html',{'args':args})

我正在django建立一个电子商务网站,我需要用户注册选项。为此,我使用django的用户注册表单。但我需要存储一些关于用户的其他信息,如联系电话,城市等。我还要验证用户将6位数代码发送到相应的电子邮件地址。

但是在django的构建形式中,他们没有存储验证码的字段。所以我创建了UserProfile模型来实现这个目的。并创建了代码字段来存储6位数的随机数。

我想将此随机数存储到代码字段中,并将其发送到用户电子邮件地址。当用户输入代码时,函数将使用存储的代码对其进行验证。为此,我需要来从数据库中检索代码。所以我想将此密钥传递给 views.py

谢谢

1 个答案:

答案 0 :(得分:1)

如果我正确解释您的问题,您需要UserProfile.objects.get(code=codeval)。这将为您提供实际的个人资料,因此如果您想要ID,请执行UserProfile.objects.get(...).id

请注意,您当前的代码可能会为多个配置文件提供相同的代码,因此您应该使用.filter代替.get来阻止或使用匹配的所有配置文件。