如何在 django allauth 中更改 activate_url 的值?

How to change the value of activate_url in django allauth?

我正在使用 allauth,注册后用户会收到一封电子邮件,要求他们单击 link 以验证他们的电子邮件地址。我想更改此 link 的值。

我想将其更改为

http://localhost:8001/account/confirm-email/hy72ozw8b1cexuw2dsx4wwrmgzbmnyxx4clswh67tcvgyovg/

http://localhost:8001/index.html#/verifyEmail/hy72ozw8b1cexuw2dsx4wwrmgzbmnyxx4clswh67tcvgyovg/

我该怎么做?我看到 activate_url 值正在 email_confirmation_text.txt

中使用

我没有使用过 django-allauth 也没有将它合并到我的项目中,但只是在他们的源代码中闲逛告诉我以下内容:

send method just does a basic urlresolvers.reverse call, which means it's constructing the URL from account/urls.py as defined here.

因此,您有三个选择:

  1. 覆盖他们的urls.py,每次更新包时你都必须重复(糟糕)。
  2. 在他们的 GitHub 上提出问题,看看他们是否会将其添加为配置选项,而不是 "hard-coding" 他们已经完成的。
  3. 尝试子类化他们的 EmailConfirmation 模型,用更适合你的项目的东西覆盖他们的发送方法,看看你是否可以让它使用你的而不是他们的(不知道这是否可行) ).

您实际上不必覆盖 allauthurls.py 即可实现此目的,您需要做的就是指定 url [=19= 的版本] 之后包括 allauth 的 urls:

from django.conf.urls import patterns, include, url
from allauth.account.views import confirm_email

urlpatterns = patterns('',
    ...
    url(r'^accounts/', include('allauth.account.urls')),
    url(r'^index.html#/verifyEmail/(?P<key>\w+)/$', confirm_email,
        name="account_confirm_email"),
    # but I would recommend changing that url:
    url(r'^verify-email/(?P<key>\w+)/$', confirm_email,
        name="account_confirm_email"),
    ...
)

这是一篇关于 URLS 的好文章:Cool URIs don't change