如何在同时使用django-registration和django-socialauth时显示帖子注册欢迎信息?

时间:2013-02-26 23:59:56

标签: django django-views django-registration django-socialauth

这是一个非常微不足道的问题,但我必须遗漏一些东西,因为我无法想出一个我很满意的解决方案。

我正在使用两个库来处理注册,基于电子邮件注册的django-registration和基于社交注册的django-socialauth,并希望在用户首次注册时显示欢迎消息。

我目前的方法是让一个上下文处理器检查用户是否在过去2分钟内注册了,如果是,则更新请求对象。这似乎是低效的,因为我每次只检查一次时都会检查。

我尝试使用信号实现它,但我遇到的问题是我需要一些方法来挂钩请求,但只有django-registration传递请求。

我正在考虑的一个选项是使用信号来更新数据库中的记录,但这似乎有点过分了。我错过了一些明显的东西吗?

context_processors.py:

def just_registered(request):
    just_registered = False
    if request.user.is_authenticated() and request.user.email:
        if request.user.date_joined < datetime.today() + timedelta(minutes=2):
            if 'just_registered' not in request.session:
                just_registered = True
                request.session['just_registered'] = just_registered
    return { 'just_registered' : just_registered }

3 个答案:

答案 0 :(得分:3)

您可以使用django消息并在模板​​中实现它

{% if messages %}
    {% for message in messages %}
    {{message}}
    {% endfor %}
{% endif %}

def just_registered(request):
    if request.user.is_authenticated():
        if request.user.date_joined < datetime.today() + timedelta(minutes=2):
            messages.info(request, "Welcome")
    return ''

用户已通过身份验证已经了解,您无需输入用户电子邮件,因为在您注册时,需要提供电子邮件

答案 1 :(得分:0)

为了清楚起见,您希望在用户第一次成功登录时显示欢迎消息(它在您的问题中首次注册)?他们是否遵循电子邮件中的激活链接?您可以将该电子邮件链接转到目标网页的新用户版本。

否则,如果您想为普通用户和第一次登录的人使用相同的页面,我看不出如何避免检查这是否是用户第一次登录。为此,看起来好像在用户上使用布尔属性(或者跟他们说话),跟踪他们之前是否已经登录,而不是看他们多久以前激活帐户(如果他们怎么办? 2天前激活但没有登录?)

答案 2 :(得分:0)

根据您对公主的评论,您最好的选择是在用户首次登录时保存某种数据。

我建议编写一个简单的中间件来检测首次登录并以持久的形式保存

看看这个:

http://blog.elcodo.pl/post/926902087/django-detect-users-first-login

您还可以在django跟踪中查看中间件

https://github.com/codekoala/django-tracking/blob/master/tracking/middleware.py

效率稍低,但鉴于HTTP

的无状态,我没有看到任何其他方式