【问题标题】:What the difference between using Django redirect and HttpResponseRedirect?使用 Django 重定向和 HttpResponseRedirect 有什么区别?
【发布时间】:2012-10-29 12:59:28
【问题描述】:
一般用哪个比较好?
写作有什么好处:
return redirect(my_url)
结束:
return HttpResponseRedirect(my_url)
还是直接别名?有什么区别吗?哪个更pythonic/django-nic?
【问题讨论】:
标签:
python
django
redirect
【解决方案1】:
两者是有区别的:
对于HttpResponseRedirect,第一个参数只能是url。
redirect最终会返回一个HttpResponseRedirect,可以接受model、view或url作为“to”参数。因此,它可以“重定向”到的内容更加灵活。
我也喜欢redirect 更短。所以我会使用redirect 而不是HttpResponseRedirect。
虽然两者都可以使用。
【解决方案2】:
来自文档 -
redirect(to[, permanent=False], *args, **kwargs) 返回一个
HttpResponseRedirect 指向传递参数的相应 URL。
从定义上看是一样的。这就是捷径的用途。两者都是一回事。
快捷方式通常写在实际 API 的上一层。所以redirect 用参数permanent=False 封装了HttpResponseRedirect 和HttpResponsePermanentRedirect。
使用HttpResponseRedirect 而不是redirect 并没有太大的缺点。希望这可以清除它。