django - 如何设置需要手动激活帐户的django-registration?

标签 django registration

如何设置需要由管理员手动激活帐户的 django-registration?

在帐户持有人单击电子邮件中的链接后,我希望向管理员发送一封电子邮件,他还需要单击一个链接,然后该帐户才会处于事件状态。

django-registration 是否可以,或者我是否需要使用其他东西,以及使用什么?

最佳答案

django-registration 允许你写一个 custom backend处理自定义激活需求。

所以你要做的是创建你自己的后端,实现 registeractivate你自己。

以下是如何实现 register 的示例。功能:

def register(self, request, **kwargs):
    username, email, password = kwargs['username'], kwargs['email'], kwargs['password1']
    if Site._meta.installed:
        site = Site.objects.get_current()
    else:
        site = RequestSite(request)
    new_user = RegistrationProfile.objects.create_inactive_user(username, email,
                                                                password, site, 
                                                                send_email=False)
    # send an email to the admins with user information
    send_new_user_notification(new_user) # you would write this function
    signals.user_registered.send(sender=self.__class__,
                                 user=new_user,
                                 request=request)
    return new_user

关键是要确保send_email设置为假;这将阻止用户获得激活链接。然后,您可以决定发送给管理员的电子邮件是否包含激活链接,或者您是否对他们转到管理员并选中“事件”框感到满意。

如果您使用 AuthenticationForm来自 django.contrib.auth那么它会自动拒绝 is_active 的用户是 False,但如果您不使用它,请确保对需要事件用户的任何请求运行以下检查:
def restricted_view(request):
    if request.user and request.user.is_active:
        #continue with the code

您也可以编写自己的装饰器(查看 @login_required 以获得指针)。请注意 @login_required不检查 is_active .

关于django - 如何设置需要手动激活帐户的django-registration?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4411924/

相关文章:

python - 如何在 Django 中按日期范围过滤记录?

python - Django,在哪里更新失败的登录尝试以及为什么?

python - Python中使用正则表达式进行批量替换

python - 如何在 Django 中序列化 RawQuerySet?

php - "No database selected"问题

php - 帮助!用户注册问题!

windows - 25 个字符的产品 key 如何工作?

mysql - 如何创建一个具有非唯一ID的表并将其作为另一个表中的外键?

php - Magento 注册表格

facebook - 注册插件自定义字段 - 总是需要?