Django中几种重定向方法


Posted in Python onApril 28, 2015

这里使用的是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)

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

Python 相关文章推荐
Python中有趣在__call__函数
Jun 21 Python
Python实现base64编码的图片保存到本地功能示例
Jun 22 Python
Python实现重建二叉树的三种方法详解
Jun 23 Python
浅谈python 导入模块和解决文件句柄找不到问题
Dec 15 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
使用python切片实现二维数组复制示例
Nov 26 Python
Python 日期的转换及计算的具体使用详解
Jan 16 Python
Python urllib2运行过程原理解析
Jun 04 Python
python实现邮件循环自动发件功能
Sep 11 Python
django中ImageField的使用详解
Dec 21 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
Jan 27 Python
Django路由层如何获取正确的url
Jul 15 Python
详解Python的单元测试
Apr 28 #Python
Python xlrd读取excel日期类型的2种方法
Apr 28 #Python
Python发送email的3种方法
Apr 28 #Python
Python中使用partial改变方法默认参数实例
Apr 28 #Python
调试Python程序代码的几种方法总结
Apr 28 #Python
解析Python中的异常处理
Apr 28 #Python
python调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 #Python
You might like
通过PHP CLI实现简单的数据库实时监控调度
2009/07/01 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
JavaScript生成GUID的多种算法小结
2013/08/18 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
jquery提交form表单简单示例分享
2014/03/03 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
Python的标准模块包json详解
2017/03/13 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
幼儿园中班评语大全
2014/04/17 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
针对吵架老公保证书
2015/05/08 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android