我有以下用户流:
1) 用户注册。
2) 用户有一个"getting_started"页面,他在其中填写一些基本信息并添加图片。
3) 用户激活他的电子邮件并登录
用户在开始页面上填写完信息后,如果他返回页面getting_started/
,我希望用户重定向到他的home/
。实现这一点最简单的方法是什么?(作为参考,类似于LinkedIn或Facebook的注册流程)。
我想到的方法是在用户填写getting_started
页面后设置一个全局变量getting_started=1,在getting_started
页面上设置do--
if getting_started:
redirect to home/
else:
...(normal getting started view)...
您想要重定向的只是getting_started视图/页面吗?不要从全局变量的角度思考,要从数据库字段的角度思考!
一旦您的用户注册,他们将成为注册用户(如果您使用的是djangos auth应用程序),并且他们将在数据库中有一个条目。因此,您只需检查用户是否已经注册:如果已经注册,请重定向,否则允许他们继续注册。
您可以简单地在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"),
...
(或者你可以硬编码重定向)
如果您正在寻找更复杂的重定向(可能有许多页面需要重定向到主页),您应该考虑编写一些中间件。这将允许您拦截每个传入的请求,查看它是否指向某个页面,并重定向。
https://docs.djangoproject.com/en/dev/topics/http/middleware/?from=olddocs