Django-registration:激活新用户时出错

时间:2012-08-23 15:25:18

标签: django url-routing

我在开发服务器上的项目中使用Django注册。 当我注册新用户时,我使用EMAIL_BACKEND =' django.core.mail.backends.filebased.EmailBackend'获取激活链接。 当我尝试将激活链接放入Web浏览器时,出现错误,帐户未激活。

据说:Error not found

谢谢。 此函数用于生成密钥。

def create_profile(self, user):
    """
    Create a ``RegistrationProfile`` for a given
    ``User``, and return the ``RegistrationProfile``.

    The activation key for the ``RegistrationProfile`` will be a
    SHA1 hash, generated from a combination of the ``User``'s
    username and a random salt.

    """
    salt = hashlib.sha1(str(random.random())).hexdigest()[:5]
    username = user.username
    if isinstance(username, unicode):
        username = username.encode('utf-8')
    activation_key = hashlib.sha1(salt+username).hexdigest()
    return self.create(user=user,
                       activation_key=activation_key)

我收到了那封邮件。但我使用EMAIL_BACKEND' django.core.mail.backends.filebased.EmailBackend'。

我认为问题来自这里。但我无法在生产服务器上进行测试。

Mail received

我实际上解决了这个问题因为我生成了发送文件的电子邮件,这要归功于django为开发目的提供的文件电子邮件后端。在此文件中,当有回车符时,它会添加一个=字符。这就是激活帐户的链接。

2 个答案:

答案 0 :(得分:0)

字符'='不在\ w +范围内。使用[\ w =] +代替\ w +。

?P< activation_key> \ w + 替换为?P< activation_key> [\ w =] +

答案 1 :(得分:0)

您的激活密钥中不应包含=个字符。

虽然sergzach的答案可行,但我更感兴趣的是找出=为什么会出现在那里。

django-registration usually generates the key as follows

        salt = sha.new(str(random.random())).hexdigest()[:5]
        activation_key = sha.new(salt+user.username).hexdigest()

你在哪里产生你的?