【问题标题】: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 或创建一个登录中间件,它将为每个请求执行此操作。

另外请注意,我在登录后传递下一个要访问的网址,因为通常我想降落在我要去的地方。

【讨论】:

    猜你喜欢
    • 2011-07-12
    • 2019-03-19
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 2016-02-09
    • 2021-06-02
    • 1970-01-01
    • 2013-07-15
    相关资源
    最近更新 更多