【发布时间】:2018-01-01 16:57:47
【问题描述】:
如何将 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 位随机数。
我想将此随机数存储到代码字段中,并将其发送到用户电子邮件地址。当用户输入代码时,一个函数将与存储的代码进行验证。为此,我需要 key 从数据库中检索代码。所以我想将此密钥传递给 views.py。
谢谢
【问题讨论】:
-
为了清楚起见,您想从
codeval获得UserProfile? -
我需要 UerProfile id 来获取 UserProfile.objects.get(id=id).code 以将其与用户的匹配
-
在用户输入验证码的页面,你还有什么其他的方法来验证他们的身份?即它是该特定用户的自定义 URL,还是他们也输入了他们的用户名或电子邮件地址?如果是这样,那么您可以使用该信息来查找用户对象和 UserProfile 对象。
-
def signUpView(request): if request.method == 'POST': form = RegistrationForm(request.POST) form.is_active = False form.save() if form.is_valid(): form .save() return redirect('/website/login/') else: form = RegistrationForm() return render(request,'website/signUp.html',{'form':form})