2011-06-03 75 views
1

我有以下用户流程:注册后的用户流程

1)用户注册。

2)用户有一个'getting_started'页面,他填写了一些基本信息并添加了一张图片。

3)用户激活他

电子邮件和日志,我希望用户被重定向到一个用户已经填写完自己的入门页面上的信息,如果他再回到getting_started/页面后他home/。最简单的方法是什么? (作为参考,类似于LinkedIn或Facebook注册流程)。

我想到的,我是设置= 1之后,用户填写getting_started页面getting_started一个全局变量,而getting_started页面上的显示方式,做 -

if getting_started: 
    redirect to home/ 
else: 
    ...(normal getting started view)... 

回答

4

难道仅仅是您要重定向的getting_started视图/页面?不要用全局变量来思考,就数据库字段来说吧!

一旦你的用户注册,他们将是一个注册用户(如果你使用的是djangos认证应用程序),他们将在数据库中有一个条目。因此,您只需检查用户是否已注册;如果是,重定向,否则允许他们继续注册。

你可以简单地把支票在getting_started观点开始看,如果用户已经签署了

from django.http import HttpResponseRedirect 

def getting_started_view(request): 
    if request.user.is_authenticated(): 
     return HttpResponseRedirect(reverse('home_view')) 

其中home_view是在你的urls.py:

url("...","someapp.views.viewname", name="home_view"), 
... 

(或者你可以硬编码重定向)

如果你正在寻找更复杂的重定向(可能需要许多页面e重定向到主页),你应该看看编写一些中间件。这将允许您拦截进入的每个请求,查看它是否到达特定页面并重定向。

https://docs.djangoproject.com/en/dev/topics/http/middleware/?from=olddocs

+0

谢谢你,这是非常有益的。一个规定:如果用户在getting_started页面上,并且他在他的链接中点击认证电子邮件,我希望用户仍然能够填写getting_started页面。我将如何确保这一点? – David542 2011-06-03 20:37:44

+1

您可以将字段添加到用户配置文件(布尔字段),该字段用于跟踪此信息是否已填充。你如何保存这个额外的入门数据?而不是使用额外的字段,你可以只对额外的数据进行查询,看看它是否存在,并相应地重定向,即如果GettingStartedData.objects.filter(user_id = user_id).exists()... – 2011-06-03 20:59:48