我有以下用户流程:
1)用户注册。
2)用户有一个'getting_started'页面,他填写了一些基本信息并添加了一张图片。
3)用户激活他的电子邮件并登录
用户在入门页面上填写完信息后,如果他回到页面getting_started/
,我希望用户被重定向到他的home/
。最简单的方法是什么? (作为参考,类似于LinkedIn或Facebook注册流程)。
我想到的方法是在用户填写getting_started
页面后设置全局变量getting_started = 1,并在getting_started
页面上执行 -
if getting_started:
redirect to home/
else:
...(normal getting started view)...
答案 0 :(得分:4)
是否只是要重定向的getting_started视图/页面?不要考虑全局变量,从数据库字段的角度思考!
用户注册后,他们将成为注册用户(如果您使用的是djangos auth app),他们将在数据库中有一个条目。因此,您只需检查用户是否已注册:如果是,请重定向,否则允许他们继续注册。
你可以简单地检查一下get_started视图的开头,看看用户是否已经注册
from django.http import HttpResponseRedirect
def getting_started_view(request):
if request.user.is_authenticated():
return HttpResponseRedirect(reverse('home_view'))
url("...","someapp.views.viewname", name="home_view"),
...
(或者你可以硬编码重定向)
如果您正在寻找更复杂的重定向(可能需要重定向到主页的大量页面),您应该考虑编写一些中间件。这将允许您拦截进入的每个请求,查看它是否属于某个页面,并重定向。
https://docs.djangoproject.com/en/dev/topics/http/middleware/?from=olddocs