例如,在我的索引(请求)中:
def index(request):
if logged_in:
return HttpResponseRedirect("/home_profile")
else:
return HttpResponseRedirect("/login")
这样,当用户点击我的主页时……他将被适当地重定向.这是一个好的架构吗?还是会导致缓存问题等?
解决方法:
重定向是可以的(302应该是不会造成任何缓存问题的,因为302是临时的),但是为什么在if和else中都需要进行重定向.更好的方法是如果未登录则重定向到登录页面,否则视图应返回响应,而不是不必要地重定向例如
def home(request):
if not logged_in:
return HttpResponseRedirect("/login?next=%s"%reverse("home"))
return HttpResponse(...)
您可以在需要用户登录的每个视图中执行相同的操作,否则创建一个登录装饰器,djago auth已经拥有login_required或创建一个将对每个请求执行此操作的登录中间件.
另请注意,登录后我将传递下一个要访问的URL,因为通常我想登陆我要去的地方.