django学习——通过HttpResponseRedirect 和 reverse实现重定向
2018-01-10 11:29
1001 查看
用django开发web应用, 经常会遇到从一个旧的url转向一个新的url,也就是重定向。
HttpResponseRedirect:构造函数的第一个参数是必要的 — 用来重定向的地址。这些能够是完全特定的URL地址(比如,’http://www.yahoo.com/search/‘),或者是一个不包含域名的绝对路径地址(例如, ‘/search/’)。
还可以通过reverse()对url的name进行解析:
url.py
myapp/views.py
而如果url中包含参数,如下类型的url:
如果我们还采用上述方式实现重定向,则会提示缺少一个参数:blog_id。此时需要在reverse()中添加参数:
如果包含多个字段,可以采用如下形式:
HttpResponseRedirect:构造函数的第一个参数是必要的 — 用来重定向的地址。这些能够是完全特定的URL地址(比如,’http://www.yahoo.com/search/‘),或者是一个不包含域名的绝对路径地址(例如, ‘/search/’)。
from django.http import HttpResponseRedirect from django.views import View class LoginView(View): def post(self, request): ... return HttpResponseRedirect("/index/")
还可以通过reverse()对url的name进行解析:
url.py
from django.conf.urls import url from myapp import views urlpatterns = [ url(r'^index/$', views.myview, name='index'), ]
myapp/views.py
from django.http import HttpResponseRedirect from django.core.urlresolvers import reverse def myview(request): ... return HttpResponseRedirect(reverse('index'))
而如果url中包含参数,如下类型的url:
url(r'^blog/(?P<blog_id>\d+)/$', BlogDetailView.as_view(), name='blog_id')
如果我们还采用上述方式实现重定向,则会提示缺少一个参数:blog_id。此时需要在reverse()中添加参数:
blog_id = blog.id #获取到博客的id号 return HttpResponseRedirect(reverse('index', args=(blog_id)))
如果包含多个字段,可以采用如下形式:
url(r'^blog/(?P<blog_id>\d+)/(?P<user_id>\d+)、$', BlogDetailView.as_view(), name='blog_id') return HttpResponseRedirect(reverse('index', kwargs={'blog_id': blog_id, 'user_id': user_id}))
相关文章推荐
- [py]django url 参数/reverse和HttpResponseRedirect
- django的HttpResponseRedirect重定向 mysql保存文本的换行问题
- Response.Redirect:无法在发送 HTTP 标头之后进行重定向
- Response.Redirect引起的“无法在发送HTTP标头之后进行重定向”
- Response.Redirect引起的“无法在发送HTTP标头之后进行重定向”
- 通过response实现请求重定向
- servlet response应用六:通过response实现请求重定向
- 基于 Django1.10 文档的深入学习(14)—— Request and response objects 之 HttpResponse objects
- 【学习摘记】马士兵bbs改良版_课时33_删除帖子_2——通过传递url实现删除后跳转回来时的“重定向”
- STM32 学习九 通过USART实现printf重定向
- 深入体验JavaWeb开发内幕之Response对象操作实例之通过Response实现重定向和刷新跳转并跳转页面
- ASP编程菜鸟入门教程-Response.redirect实现页面重定向
- 分布式学习笔记1通过Java自己实现简单的HTTP RPC框架
- django views视图函数返回值 return redirect httpresponse总结
- from django.http import HttpResponseRedirect
- javascript学习(十七):js通过XMLHTTPrequest实现Ajax
- Page.Response.Buffer与Response.Redirect一起用报错“无法在发送 HTTP 标头之后进行重定向”
- 通过Filter和HttpServletResponseWrapper,实现Gzip压缩
- 解决:无法在发送 HTTP 标头之后进行重定向。 跟踪信息: 在 System.Web.HttpResponse.Redirect(String url, Boolean endResponse, Boolean permanent) 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>……
- Response.redirect实现页面重定向