【问题标题】:Is it OK to do 302s for architecture in my web applciation?在我的 Web 应用程序中为架构做 302 可以吗?
【发布时间】:2010-02-27 11:03:56
【问题描述】:
例如,在我的索引(请求)中:
def index(request):
if logged_in:
return HttpResponseRedirect("/home_profile")
else:
return HttpResponseRedirect("/login")
这样,当用户点击我的主页时......他会被适当地重定向。这是一个好的架构吗?或者这会导致缓存问题等?
【问题讨论】:
标签:
python
django
redirect
【解决方案1】:
重定向是可以的(302 不应该导致任何缓存问题,因为 302 是临时的),但是为什么你需要在 if 和 else 中都进行重定向。更好的方法是在未登录时重定向到登录页面,否则视图应返回响应,而不是不必要地重定向,例如
def home(request):
if not logged_in:
return HttpResponseRedirect("/login?next=%s"%reverse("home"))
return HttpResponse(...)
您可以在用户需要登录的每个视图中执行相同的操作,否则创建一个登录装饰器,djago auth 已经有 login_required 或创建一个登录中间件,它将为每个请求执行此操作。
另外请注意,我在登录后传递下一个要访问的网址,因为通常我想降落在我要去的地方。