使用 Django 重定向和 HttpResponseRedirect 有啥区别?
Posted
技术标签:
【中文标题】使用 Django 重定向和 HttpResponseRedirect 有啥区别?【英文标题】:What the difference between using Django redirect and HttpResponseRedirect?使用 Django 重定向和 HttpResponseRedirect 有什么区别? 【发布时间】:2012-10-29 12:59:28 【问题描述】:一般用哪个比较好?
https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#redirect
https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponseRedirect
写作有什么好处:
return redirect(my_url)
结束:
return HttpResponseRedirect(my_url)
还是直接别名?有什么区别吗?哪个更pythonic/django-nic?
【问题讨论】:
【参考方案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
并没有太大的缺点。希望这可以清除它。
【讨论】:
以上是关于使用 Django 重定向和 HttpResponseRedirect 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章