python - 在我的 Web 应用程序中为架构做 302 是否可以?

标签 python django redirect

比如在我的index(request)中:

def index(request):
    if logged_in:
        return HttpResponseRedirect("/home_profile")
    else:
        return HttpResponseRedirect("/login")

这样,当用户点击我的主页时...他会被适本地重定向。这是一个好的架构吗?或者这会导致缓存问题等吗?

最佳答案

重定向没问题(302 不应该导致任何缓存问题,因为 302 是临时的),但为什么您需要在 if 和 else 中都进行重定向。更好的方法是在未登录时重定向到登录页面,否则 View 应返回响应,而不是不必要地重定向,例如

def home(request):
    if not  logged_in:
        return HttpResponseRedirect("/login?next=%s"%reverse("home"))

    return HttpResponse(...)

你可以在用户需要登录的每个 View 中做同样的事情,否则做一个登录装饰器,djago auth 已经有 l ogin_required或者制作一个登录中间件,它将为每个请求执行此操作。

另请注意,我在登录后传递下一个要访问的 url,因为通常我想到达我要去的地方。

关于python - 在我的 Web 应用程序中为架构做 302 是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2347074/

相关文章:

python - Pandas 按任何给定列中的特定值分组

django - Microsoft Azure 将额外的查询字符串附加到带有查询字符串的 URL

python - Celery Cloudamqp 为每个任务创建新连接

url - 301 重定向与 307 重定向

php - Magento 登录后重定向

python - 如何在不添加额外索引的情况下使用 Pandas groupby apply()

Python在GAE上动态生成HTML页面

python - 解包元组以在 python 2 中自动运行具有未知长度参数的函数

python - 如何在不评估的情况下拆分 Django 查询集?

php - 在出现错误时将用户重定向回表单后,如何重新填写用户填写的表单字段?