这是一个相当微不足道的问题,但我肯定遗漏了一些东西,因为我想不出一个令我满意的解决方案。
我使用两个库来处理注册,django-register用于基于电子邮件的注册,django-socialauth用于基于社交的注册,并希望在用户第一次注册时显示欢迎消息。
我目前的方法是让一个上下文处理器检查用户是否在过去2分钟内注册,如果注册了,则更新请求对象。这似乎效率很低,因为我每次都要检查,而它只使用一次。
我尝试使用信号来实现它,但是我遇到的问题是,我需要一些方法来连接到请求中,但是只有django- request才能传递请求。
我正在考虑的一种选择是使用信号来更新数据库中的记录,但对于这么简单的东西来说,这似乎有点过头了。我是不是漏掉了什么明显的东西?
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 }
发布于 2013-02-27 08:25:23
您可以使用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 ''
用户已通过身份验证,您不必放入用户电子邮件,因为当您注册时,电子邮件是必需的
发布于 2013-03-10 07:19:41
为了清楚起见,您是否希望在用户首次成功登录时显示欢迎消息(在您的问题中显示为注册第一次)?他们是否遵循电子邮件中的激活链接?您可以将该电子邮件链接转到您的登录页面的新用户版本。
否则,如果你想对普通用户和第一次登录的用户使用相同的页面,我不明白你如何避免检查这是否是用户第一次登录。要做到这一点,似乎在用户(或对他们来说是fk‘’ed)上使用一个布尔属性来跟踪他们以前是否登录过,而不是查看他们多长时间前激活了帐户(如果他们在2天前激活了,但没有登录呢?)
发布于 2013-03-16 12:37:50
在你对公主回答的评论之后,你最好的选择是在用户第一次登录时保存一些数据。
我建议编写一个简单的中间件来检测第一次登录并将其保存为持久形式
看看这个:
http://blog.elcodo.pl/post/926902087/django-detect-users-first-login
您还可以在django tracking中签出中间件
https://github.com/codekoala/django-tracking/blob/master/tracking/middleware.py
它的效率稍低,但是考虑到HTTP的无状态,我看不到其他方法
https://stackoverflow.com/questions/15101816
复制相似问题