HttpResponseRedirect
- 当一个逻辑处理完成后,不需要向客户端呈现数据,而是转回到其它页面
- 如添加成功、修改成功、删除成功后显示数据列表,而数据的列表视图已经开发完成,此时不需要重新编写列表的代码,而是转到这个视图就可以
- 从一个视图转到另外一个视图,就称为重定向
- Django中提供了
HttpResponseRedirect
对象实现重定向功能- 这个类继承自
HttpResponse
,被定义在django.http
模块中 - 返回的状态码为302
- 这个类继承自
重定向演练
需求:登陆成功后,重定向到另外一个视图
配置URLconf
# 登陆成功后重定向 url(r'^login/$', views.login), url(r'^redirect/$', views.redirect),
视图
# 登陆 def login(request): return render(request, 'Book/login.html')
模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<form action="/redirect/" method="post">
{# Django项目默认会做CSRF安全验证 #}
{% csrf_token %}
<input type="text" name="uname">
<br>
<br>
<input type="password" name="upassword">
<br>
<br>
<input type="submit" value="登陆">
</form>
</body>
</html>
重定向视图:(登陆成功后重定向:由登录页转向ajax请求页)
# 登陆成功后重定向:由登录页转向ajax请求页 def redirect(request): return HttpResponseRedirect('/ajax/')
提示:重定向简写
from django.shortcuts import redirect def redirect(request): return redirect('/ajax/')