gpt4 book ai didi

python - 带有 token 参数的 Django 电子邮件验证 URL

转载 作者:行者123 更新时间:2023-12-01 01:38:35 25 4
gpt4 key购买 nike

我正在尝试创建电子邮件验证身份验证,但无法访问此 URL

127.0.0.1:8000/activate/d34324/KYJsqYMoV5DJ0vewSBdC9KZlZtnOAU7KE

如何为此代码创建正确的路由?

urls.py

url(r'^logout/$', OwnerRegister.logout_view),
url(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',OwnerRegister.activate,name='activate'),

views.py

class OwnerRegister(TemplateView):
template_name = "owner_register.html"

def get_context_data(self, * args, ** kwargs):
context = super(OwnerRegister, self).get_context_data()
return context

def logout_view(request):
logout(request)
return HttpResponseRedirect("/")

def activate(request, uidb64, token):
try:
print('\n\n request',request)

user_id = request.GET.get('uid')
token = request.GET.get('token')
user = User.objects.get(username=user_id)
profile = OwnerInfo.objects.get(user=user)
print(user.date_joined)

if profile.confirmation_code == token and user.date_joined > (datetime.datetime.now()-datetime.timedelta(days=1)):
print("test")
user.is_active = True
user.save()

user.backend='django.contrib.auth.backends.ModelBackend'
auth_login(request,user)
return HttpResponseRedirect('You have activated this account')
except:
return HttpResponseRedirect('')


def send_registration_confirmation(self,user,request):
p = OwnerInfo.objects.get(user=user)
current_site = get_current_site(request)
content = current_site.domain+"/activate" + user.username + "/" + str(p.confirmation_code)
send_mail("Email Verify", content, 'no-reply@gsick.com', [user.email], fail_silently=False)

最佳答案

尽管您的代码中可能存在任何其他问题,但您的 URL 模式声明似乎存在问题。具体来说,URL 模式为 token 指定以下正则表达式。命名参数和尾部斜杠:

(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/

传入的字符串为token在网址 does not match this regex因为它在第 13 个字符之后缺少连字符。

您的网址也没有尾部斜杠。提供 Django 的 APPEND_SLASH 就可以了。启用选项( the default behaviour ),这将导致 Django 在没有找到没有 URL 模式的情况下自动发出重定向以添加尾部斜杠。

您应该更改用于在 URL 中生成 token 的机制,以确保它与正则表达式匹配(添加连字符 indeed does so ),反之亦然。

关于python - 带有 token 参数的 Django 电子邮件验证 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52154017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com