用django 写了一个用户注册通过邮箱审核的代码。有点乱。哪位帮看看哪里还不对? 多谢

cndeer 2013-11-20 04:36:12
views.py:


##注册函数
def vip_reg(request):
if request.method == 'POST':
form = Reg_Form(request.POST, request.FILES)
if form.is_valid():
user = User.objects.create_user(
username = form.cleaned_data['username'],
password = form.cleaned_data['password1'],
email = form.cleaned_data['email'],
sex = form.cleaned_data['sex'],
addr_zz = form.cleaned_data['addr_zz'],
ahjs = form.cleaned_data['ahjs'],

)

user.is_active = False
user.save()
send_email(user)
###在这里发送信件。用邮箱验证审核?让 is_active=True
return HttpResponseRedirect('/vip/reg/ok/')
else:
return HttpResponse(u'注册用户时发生错误,请返回修改后重新注册!')
else:
form = Reg_Form()
variables = RequestContext(request, {'form':form})
return render_to_response('registration/register.html', variables)


def send_email(user):
email = user.email
if isinstance(email, unicode):
email = email.encode('utf-8')
#email_code = uuid.uuid5(uuid.NAMESPACE_DNS, email+str(time.time())).hex


html_content = render_to_string('send_email.html', {'email_code':active_code(email), 'user':user, 'pk':user.id })
subject, form_email, to = u'您注册了网站', 'gaoqing2018_com@163.com', email
text_content = 'aaaaaa123'
msg = EmailMultiAlternatives(subject, text_content, form_email, [to])
msg.attach_alternative(html_content, 'text/html')
msg.send()
return HttpResponse(u'请查看你注册的信箱完成注册!!')

def reguseryz(request, pk, email_code):
#pk = int(pk)
try:
pk = int(pk)
user = User.objects.get(id=pk)
except (User.DoesNotExist,ValueError):
return render_to_response('ok.html')
if user.is_active:
return HttpResponseRedirect('/accounts/login/')
elif email_code == active_code(user.email):
user.is_active = True
user.save()
return render_to_response('ok.html')

def active_code(email):
"""
激活码
"""
email_code = uuid.uuid5(uuid.NAMESPACE_DNS, email+str(time.time())).hex
return email_code



urls.py:


url(r'^vip/reg/ok/$', 'vipbbs.views.reg_ok'),
url(r'^vip/reguser/(?P<pk>\d+)/(\w+)/$', 'vipbbs.views.reguseryz'),
url(r'^accounts/login/$', 'django.contrib.auth.views.login'),


send_email.html:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>

<body>
Hello,欢迎来到zb.com!




或者复制下面的链接到浏览器



http://127.0.0.1:8000/vip/reguser/{{pk}}/{{email_code}}
</body>
</html>



现在的问题是:

上面的代码现在还不能正确运行。能收到邮件。主要是上面的差不多是蒙着写的。思路不知道对不?

怎么样把那个激活码与那个用户绑定了? 我试过如果一个激活码对了。那它可以激活别的用户的。怎么样让激活码验证一次后就失效了?

上面的那用户注册通过邮箱审核的代码哪位朋友帮我改改看?

...全文
311 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cndeer 2013-11-26
  • 打赏
  • 举报
回复
已经解决了。 就是在models里建一个字段。用来存生成的激活码。然后在审核的时候拿出来验证一下。成功后就通过审核。并且删除激活码。谢谢各位
  • 打赏
  • 举报
回复
学习了 看不出错误 呵呵
  • 打赏
  • 举报
回复
你生成的激活码没有在数据库保存么 有个状态应该就很简单了吧

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧