我可以在我的Web应用程序中为架构做302s吗?

例如,在我的索引(请求)中:

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,因为通常我想登陆我要去的地方.

上一篇:SAP技术 - How to create a CDS redirect view for a given database table


下一篇:重定向功能PHP