在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 。
谢谢
答案 0 :(得分:1)
如果我正确解释您的问题,您需要UserProfile.objects.get(code=codeval)
。这将为您提供实际的个人资料,因此如果您想要ID,请执行UserProfile.objects.get(...).id
。
请注意,您当前的代码可能会为多个配置文件提供相同的代码,因此您应该使用.filter
代替.get
来阻止或使用匹配的所有配置文件。