例如,在我的索引(请求)中:
def index(request):
if logged_in:
return HttpResponseRedirect("/home_profile")
else:
return HttpResponseRedirect("/login")
这样,当用户点击我的主页时......他被正确地重定向。这是一个很好的建筑吗?或者这会导致缓存问题等吗?
答案 0 :(得分:3)
重定向是正常的(302不应该导致任何缓存问题,因为302是临时的),但是为什么你需要在if和else中都有重定向。如果没有登录,更好的方法是重定向到登录页面,否则视图应该返回响应,而不是不必要地重定向,例如。
def home(request):
if not logged_in:
return HttpResponseRedirect("/login?next=%s"%reverse("home"))
return HttpResponse(...)
你可以在用户需要登录的每个视图中做同样的事情,否则做一个登录装饰器,djago auth已经有l ogin_required或者创建一个登录中间件,它将为每个请求执行。
另请注意,登录后我将通过下一个网址访问,因为通常我想登陆我前往的地方。