Django中几种重定向方法

   这篇文章主要介绍了Django中几种重定向方法,本文讲解了使用HttpResponseRedirect、redirect、reverse以及配置文件中配置URL等方法,需要的朋友可以参考下

  这里使用的是django1.5

  需求: 有一个界面A,其中有一个form B, 前台提交B之后,后台保存数据之后,返回界面A,如果保存失败需要在A界面提示错误。

  这里就需要后台的重定向,而且需要可以带着参数,也就是error message

  这里收集了几种方法,简答说下需要那些包,怎么简单使用。

  一、 使用HttpResponseRedirect

  The first argument to the constructor is required – the path to redirect to. This can be a fully qualified URL (e.g.'http://www.yahoo.com/search/') or an absolute path with no domain (e.g. '/search/')。 参数既可以使用完整的url,也可以是绝对路径。

  代码如下:

  from django.http import HttpResponseRedirect

  @login_required

  def update_time(request):

  #pass ... form处理

  return HttpResponseRedirect('/commons/invoice_return/index/') #跳转到index界面

  如果需要传参数,可以通过url参数

   代码如下:

  return HttpResponseRedirect('/commons/invoice_return/index/?message=error') #跳转到index界面

  这样在index处理函数中就可以get到错误信息。

  二、 redirect和reverse

  代码如下:

  from django.core.urlresolvers import reverse

  from django.shortcuts import redirect

  #https://docs.djangoproject.com/en/1.5/topics/http/shortcuts/

  @login_required

  def update_time(request):

  #pass ... form处理

  return redirect(reverse('commons.views.invoice_return_index', args=[])) #跳转到index界面

  redirect 类似HttpResponseRedirect的用法,也可以使用 字符串的url格式 /..inidex/?a=add

  reverse 可以直接用views函数来指定重定向的处理函数,args是url匹配的值。 详细请参见文档

  三、 其他

  其他的也可以直接在url中配置,但是不知道怎么传参数。

   代码如下:

  from django.views.generic.simple import redirect_to

  在url中添加 (r'^one/$', redirect_to, {'url': '/another/'}),

  我们甚至可以使用session的方法传值

  复制代码 代码如下:

  request.session['error_message'] = 'test'

  redirect('%s?error_message=test' % reverse('page_index'))

  这些方式类似于location刷新,客户端重新指定url。

  还没找到怎么在服务端跳转处理函数,直接返回response到客户端的方法。

  2014-11-13 研究:

  是不是之前的想法太死板,重定向,如果需要携带参数,那么能不能直接调用views中 url对应的方法来实现呢,默认指定一个参数。

  例如view中有个方法baseinfo_account, 然后另一个url(对应view方法为blance_account)要重定向到这个baseinfo_account。

  url中的配置:

  复制代码 代码如下:

  urlpatterns = patterns('',

  url(r'^baseinfo/', 'account.views.baseinfo_account'),

  url(r'^blance/', 'account.views.blance_account'),

  )

  复制代码 代码如下:

  @login_required

  def baseinfo_account(request, args=None):

  ​#按照正常的url匹配这么写有点不合适,看起来不规范

  ​if args:

  print args

  return render(request, 'accountuserinfo.html', {"user": user})

  @login_required

  def blance_account(request):

  return baseinfo_account(request, {"name": "orangleliu"})

  需要测试为:

  1 直接访问 /baseinfo 是否正常 (测试ok)

  2 访问 /blance 是否能正常的重定向到 /baseinfo 页面,并且获取到参数(测试ok,页面为/baseinfo 但是浏览器地址栏的url仍然是/blance)

  ​

  这样的带参数重定向是可行的。

时间: 2025-01-29 17:25:06

Django中几种重定向方法的相关文章

ASP.NET中几种加密方法

MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Computer Science和Rsa data security inc的Ronald l. rivest开发出来,经md2.md3和md4发展而来.它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数).不管是md2.md4还是md5,它们都需要获得一个随机长度的信息并产

asp.net三种重定向方法的总结

asp.net (1)Server.Transfer方法: Server.Transfer("m2.aspx");//页面转向(服务器上执行). 服务器停止解析本页,保存此页转向前的数据后,再使页面转向到m2.aspx, 并将转向前数据加上m2.aspx页结果返回给浏览器.   (2)Server.Execute方法: Server.Execute("m2.aspx"); 服务器保存此页转向前的数据后,使页面转向到m2.aspx执行, 再返回本页继续执行.再将三者结

PhotoShop人像后期处理中几种磨皮方法大揭秘教程

拥有白皙光滑的皮肤是每个女生毕生的梦想,然而在现实生活中,由于种种的原因,并不是每个女生都能够如愿. 好在我们有Photoshop软件,只需要轻轻动动手指,它就能使我们照片中的皮肤重新恢复到婴儿般的细腻. 今天笔者为大家带来的就是众多影楼.工作室人像修片最常用的手法--磨皮. 磨皮顾名思义就是将皮肤模糊掉,它可以去除皮肤上的一些斑点以及细纹,从而使皮肤看起来更加光滑. 下面就是两张磨皮前后的对比图,很明显右边的人物的皮肤看起来要更好一些;给人的视觉效果也更年轻一点. photoshop教程磨皮前

SQL SERVER 2008 中三种分页方法与比较_mssql2008

建立表: 复制代码 代码如下: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [Country] [nvarchar] (50) COLLATE Chinese_PRC_

Django中使用group

本文实例讲述了Django中使用group_by的方法.分享给大家供大家参考.具体分析如下: 在Django中怎样使用group_by语句呢?找了很多资料,都没有看到好的,在这里分享两种方法给大家: 首先,我们先建一个简单的模型. ? 1 2 3 4 5 class Book(models.Model): name = models.CharField(u'书名',max_length=255,db_index = True) author = models.CharField(u'作者',ma

IIS5中的两种服务器端网页重定向方法

iis|服务器|网页|iis|服务器 IIS5中的两种服务器端网页重定向方法      在IIS5中提供了两种服务器端网页重定向(或者说转向)的方法, 一个是Server.Transfer方法, 另外一个是Server.Execute方法. 说它们是服务器端重定向,是因为在不同页面之间的转向是直接在服务器端 完成的, 客户端只能看到结果,而不能看到转向的过程. 这同以往我们在IIS4使用的 Response.Redirect 方法是不同的.      以前, 当我们需要从一个页面转向到另外一个页

django中使用jquery ajax post数据出现403错误的解决办法(两种方法)_AJAX相关

在django中,使用jquery ajax post数据,会出现403的错误 方法一: 如果用jQuery来处理ajax的话,Django直接送了一段解决问题的代码.把它放在一个独立的js文件中,在html页面中都引入即可.注意这个js文件必须在jquery的js文件引入之后,再引入即可 $(document).ajaxSend(function(event, xhr, settings) { function getCookie(name) { var cookieValue = null;

django中使用jquery ajax post数据出现403错误的解决办法(两种方法)

在django中,使用jquery ajax post数据,会出现403的错误 方法一: 如果用jQuery来处理ajax的话,Django直接送了一段解决问题的代码.把它放在一个独立的js文件中,在html页面中都引入即可.注意这个js文件必须在jquery的js文件引入之后,再引入即可 $(document).ajaxSend(function(event, xhr, settings) { function getCookie(name) { var cookieValue = null;

ASP中五种连接数据库的方法

连接数据库 ASP中五种连接数据库的方法 简介 介绍ASP连接sql,连接access,等数据库的方法! 正文 ASP中五种连接数据库的方法 第一种 - 这种方法用在ACCESS中最多 strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("aspfree.mdb") set conn = server.createobject("adodb.connect