Django重定向是如何实现的?用的什么状态码?
时间: 2023-12-29 07:03:03 浏览: 157
在 Django 中,重定向是通过 `HttpResponseRedirect` 类实现的,这个类继承自 `HttpResponse`。它会返回一个包含 `Location` 响应头的 HTTP 响应,指示客户端将请求重定向到另一个 URL。
具体实现是在视图函数中,当需要重定向时,可以使用 `redirect` 快捷函数,它封装了 `HttpResponseRedirect` 的逻辑。例如:
```python
from django.shortcuts import redirect
def my_view(request):
...
return redirect('/another/url/')
```
这个视图函数会返回一个包含 `Location` 响应头的 HTTP 响应,状态码为 302(暂时重定向)。客户端接收到这个响应后,会自动向 `Location` 指定的 URL 发起新的请求。
除了 302 状态码,`HttpResponseRedirect` 还可以返回其他状态码,例如 301(永久重定向)和 307(临时重定向)。可以通过在构造函数中传递 `status` 参数来指定状态码。例如:
```python
from django.http import HttpResponseRedirect
def my_view(request):
...
return HttpResponseRedirect('/another/url/', status=301)
```
这个视图函数会返回一个状态码为 301 的 HTTP 响应,表示永久重定向。
阅读全文