【问题标题】:Django all auth: How to override the confirmation email urlDjango all auth:如何覆盖确认电子邮件网址
【发布时间】:2019-08-30 22:30:42
【问题描述】:

我想要做的是覆盖templates/account/email/email_confirmation_message.txt 中的确认电子邮件网址。

我想改变这部分

To confirm this is correct, go to {{ activate_url }}

类似

http://localhost:8080/confirm_email/{{ key }}

但是,我不知道{{ activate_url }} 来自哪里。 我想将key 发送到rest-auth 创建的端点。

如何重写电子邮件中的 url 链接?或者如果太复杂,在前端验证电子邮件的简单方法是什么?

【问题讨论】:

  • “在前端验证电子邮件”是什么意思? activate_url 是包含确认令牌的 url,允许 allauth 验证这与正确的电子邮件相关联。 key 是什么?
  • @dirkgroten 对不起,我误解了一些东西。 key 是验证电子邮件所需要的。请查看源代码。我使用 Django 作为休息 API。所以我不想使用默认的url{{ activate_url }}的部分是key
  • key 也是传递给模板的上下文变量。只需编写您自己的模板。
  • @dirkgroten email_confirmation_message.txt 不是指key{{ activate_url }}的部分是key
  • 嗯,它在上下文中,所以你可以使用它。查看 allauth/account/adapter.py 中的 send_confirmation_mail() 方法。这允许您在模板中添加类似“如果上面的链接不起作用,请转到 mysite.com/confirm-email 并在此处插入此密钥”之类的内容,并提供一个额外的表单,他们可以在其中粘贴密钥。

标签: django django-rest-framework single-page-application django-allauth django-rest-auth


【解决方案1】:

模板使用包含usercurrent_siteactivate_urlkey 的上下文呈现(请参阅allauth/account/adapter.py 中的send_confirmation_mail() 方法)。

因此您可以直接覆盖模板并使用key(可能还使用current_site 来创建绝对URI)在模板中创建您的URL。

【讨论】:

  • 如何将http转为https?
  • @HemanthSP 取决于你在做什么。 activate_url 使用与当前处理的request 相同的方案(例如用户注册),因此它应该自动为 https(如果您使用它进行用户注册)。如果您自己在模板中构建 url,只需硬编码 httpshttp,具体取决于 debug 是否为真。
【解决方案2】:

要解决这个问题,你可能只需要重写 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()

【讨论】:

  • 我应该将它放在文件中的什么位置,以及文件系统的什么位置?
  • 在 settings.py 文件中,您可以将其用作默认的电子邮件后端适配器。
猜你喜欢
  • 2016-02-06
  • 1970-01-01
  • 2021-07-22
  • 2020-12-22
  • 2022-10-18
  • 2018-05-16
  • 2020-01-09
  • 2023-03-14
  • 2019-04-17
相关资源
最近更新 更多