Python Django-如何在手机上获得电子邮件链接?

Python Django-如何在手机上获得电子邮件链接?,python,django,html-email,Python,Django,Html Email,我的Django网站发送了一个电子邮件确认链接,桌面上的一切似乎都很好。但是,在移动设备上,链接文本以蓝色突出显示并加下划线(即,它看起来像链接),但当用户单击它时,不会发生任何事情。它应该打开一个浏览器标签,说“你已经确认了你的电子邮件,等等” 谢谢你的提示 视图。py: def signup(request): if request.method == 'POST': #send signup form email_address = request.

我的Django网站发送了一个电子邮件确认链接,桌面上的一切似乎都很好。但是,在移动设备上,链接文本以蓝色突出显示并加下划线(即,它看起来像链接),但当用户单击它时,不会发生任何事情。它应该打开一个浏览器标签,说“你已经确认了你的电子邮件,等等”

谢谢你的提示

视图。py:

def signup(request):
    if request.method == 'POST':
        #send signup form
        email_address = request.POST['email']
        if request.POST['password1'] == request.POST['password2']:
            try:
                user = User.objects.get(email=email_address)
                return render(request, 'accounts/signup.html', {'error': "Email already in use."})
            except User.DoesNotExist:
                user = User.objects.create_user(request.POST['email'], password=request.POST['password1'])
                #auth.login(request, user)
                #send email confirmation link then redirect:
                #user = User.objects.get(email=email_address)
                current_site = get_current_site(request)
                mail_subject = 'Welcome to My Site'
                plain_msg = 'Thank you for signing up to My Site! Click this link to activate your account:\n\n'+current_site.domain+'/accounts/activated/'+urlsafe_base64_encode(force_bytes(user.pk)).decode()+'/'+account_activation_token.make_token(user)+'/'
                msg = '<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>title</title></head><body>Confirm your email address to continue:<br/><a href="'+current_site.domain+'/accounts/activated/'+urlsafe_base64_encode(force_bytes(user.pk)).decode()+'/'+account_activation_token.make_token(user)+'/">Confirm my email address</a></body></html>'
                print(msg)
                send_mail(mail_subject, plain_msg, 'my_email@gmail.com', [email_address], html_message=msg)
                return render(request, 'accounts/activation-link-sent.html', {'email': email_address})
    #truncated for Stack Overflow post
def注册(请求):
如果request.method==“POST”:
#发送报名表
email\u address=request.POST['email']
if request.POST['password1']==request.POST['password2']:
尝试:
user=user.objects.get(email=email\u地址)
返回呈现(请求'accounts/signup.html',{'error':“电子邮件已在使用中。”})
除User.DoesNotExist外:
user=user.objects.create_user(request.POST['email'],password=request.POST['password1'])
#身份验证登录(请求、用户)
#发送电子邮件确认链接,然后重定向:
#user=user.objects.get(email=email\u地址)
当前站点=获取当前站点(请求)
邮件主题='欢迎访问我的网站'
plain_msg='感谢您注册我的网站!单击此链接可激活您的帐户:\n\n'+当前站点.域+'/accounts/activated/'+urlsafe\u base64\u编码(强制字节(user.pk)).decode()+'/'+帐户激活\u令牌.生成\u令牌(user)+'/'
msg='标题确认您的电子邮件地址以继续:
' 打印(msg) 发送邮件(邮件主题,普通信息,我的_email@gmail.com“,[email\u address],html\u message=msg) 返回呈现(请求'accounts/activation link sent.html',{'email':email_address}) #为堆栈溢出post截断
您应该使用创建包含当前域和协议的完全限定链接,然后在电子邮件中使用此链接

link = request.build_absolute_uri('/accounts/activated/'+urlsafe_base64_encode(force_bytes(user.pk)).decode()+'/'+account_activation_token.make_token(user)+'/')
您是否有与此url匹配的url模式?您应该考虑使用URL构建< /P>
path = reverse('activate', kwargs={
    'pk': user.pk,
    'token': account_activation_token.make_token(user)
})
link = request.build_absolute_uri(path)

当你点击链接时,什么都没有发生?这是否在电子邮件应用程序中?请尝试将
target=“\u blank”
添加到link@IainShelvington是的,什么也没发生。真奇怪。给我看这个的两个用户都在使用一个电子邮件应用,是的。是不是每个用户都在使用一个应用,而且是同一个应用?可能是应用程序正在阻止链接。链接是否包含协议?(http/https)我会删除带有中链接的注释,因为它包含您的域和验证令牌-我确实有一个URL模式,所以我暂时不讨论这个问题。我使用了
request.build\u absolute\u uri
,删除了一个用户帐户,让他们重新注册,他们的电子邮件应用程序中的电子邮件确认链接工作得非常好。