Django all auth:如何覆盖确认邮件 url
Django all auth: How to override the confirmation email url
我想做的是覆盖 templates/account/email/email_confirmation_message.txt
中的确认电子邮件 url。
我想改这部分
To confirm this is correct, go to {{ activate_url }}
类似于
http://localhost:8080/confirm_email/{{ key }}
但是,我无法弄清楚 {{ activate_url }}
来自哪里。
我想将 key
发送到 rest-auth
的端点。
如何重写电子邮件中的 url link?或者如果它太复杂了,在前端验证电子邮件的简单方法是什么?
模板使用包含 user
、current_site
、activate_url
和 key
的上下文呈现(参见 [=21= 中的 send_confirmation_mail()
方法]allauth/account/adapter.py).
因此您可以覆盖模板并使用 key
(也可能 current_site
来创建绝对 URI)在模板中创建您的 URL。
要解决此问题,您可能只需要重写 send_email 函数即可。
from allauth.account.adapter import DefaultAccountAdapter
from django.conf import settings
class CustomAllauthAdapter(DefaultAccountAdapter):
def send_mail(self, template_prefix, email, context):
account_confirm_email = '/api/v1/auth/register/account-confirm-email/'
context['activate_url'] = (
settings.BASE_URL + account_confirm_email + context['key']
)
msg = self.render_mail(template_prefix, email, context)
msg.send()
我想做的是覆盖 templates/account/email/email_confirmation_message.txt
中的确认电子邮件 url。
我想改这部分
To confirm this is correct, go to {{ activate_url }}
类似于
http://localhost:8080/confirm_email/{{ key }}
但是,我无法弄清楚 {{ activate_url }}
来自哪里。
我想将 key
发送到 rest-auth
的端点。
如何重写电子邮件中的 url link?或者如果它太复杂了,在前端验证电子邮件的简单方法是什么?
模板使用包含 user
、current_site
、activate_url
和 key
的上下文呈现(参见 [=21= 中的 send_confirmation_mail()
方法]allauth/account/adapter.py).
因此您可以覆盖模板并使用 key
(也可能 current_site
来创建绝对 URI)在模板中创建您的 URL。
要解决此问题,您可能只需要重写 send_email 函数即可。
from allauth.account.adapter import DefaultAccountAdapter
from django.conf import settings
class CustomAllauthAdapter(DefaultAccountAdapter):
def send_mail(self, template_prefix, email, context):
account_confirm_email = '/api/v1/auth/register/account-confirm-email/'
context['activate_url'] = (
settings.BASE_URL + account_confirm_email + context['key']
)
msg = self.render_mail(template_prefix, email, context)
msg.send()