【问题标题】:How to change the value of activate_url in django allauth?如何更改 django allauth 中 activate_url 的值?
【发布时间】:2015-02-11 18:26:09
【问题描述】:

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

我想改成

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

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

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

【问题讨论】:

    标签: python django django-allauth


    【解决方案1】:

    您实际上不必重写 allauthurls.py 来实现这一点,您需要做的就是指定您的 url after 版本,包括 allauth's网址:

    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"),
        ...
    )
    

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

    【讨论】:

    • 很高兴你添加了这个。我想到了这个,发现自己在猜测它是否会起作用,但没有时间正确地测试它。
    • 这里还有一个问题,URL中'#'之后的任何内容都不会被浏览器发送到服务器。因此,在从 URL 中删除“#”之前,上述解决方案将不起作用。 @birdy,你真的需要'#'吗?如果没有,只需将其删除,一切都会完美运行。
    • @DebanshuKundu,非常好的一点,url 中# 之后的任何内容都不会传递到服务器,除非它转义到%23。此外,根本没有理由在 django 的网址中包含 index.html 或任何 .html
    • @AlexeyKuleshevich 感谢您的回答。但是,我收到一个错误name 'confirm_email' is not defined 在我的urls.py 我有以下url(r'^account/', include('allauth.urls')) 这是我的整个urls.py gist.github.com/anonymous/b6505cefa5307f71ccab
    • 那是因为您缺少导入:from allauth.account.views import confirm_email
    【解决方案2】:

    我没有使用过 django-allauth 或将其合并到我的一个项目中,但只是在他们的源代码中四处寻找告诉我以下信息:

    send method 只是进行基本的urlresolvers.reverse 调用,这意味着它根据here 的定义从account/urls.py 构造URL。

    因此,您有三个选择:

    1. 覆盖他们的urls.py,每次更新包时都必须重复一遍(糟糕)。
    2. 在他们的 GitHub 上提出问题,看看他们是否会将其添加为配置选项,而不是像他们所做的那样“硬编码”它。
    3. 尝试子类化他们的 EmailConfirmation 模型,用更适合您的项目的东西覆盖他们的 send 方法,看看您是否可以让它使用您的而不是他们的(不知道这是否可行)。李>

    【讨论】:

      猜你喜欢
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多