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之大话题小函数(2)
Oct 10 Python
介绍Python中几个常用的类方法
Apr 08 Python
Python中Random和Math模块学习笔记
May 18 Python
Python 基于Twisted框架的文件夹网络传输源码
Aug 28 Python
Windows下Python2与Python3两个版本共存的方法详解
Feb 12 Python
Python 实现数据库更新脚本的生成方法
Jul 09 Python
numpy中索引和切片详解
Dec 15 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
python中如何使用分步式进程计算详解
Mar 22 Python
Python线程条件变量Condition原理解析
Jan 20 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
将python字符串转化成长表达式的函数eval实例
May 11 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自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
js实现数字滚动特效
2019/12/16 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
Python导入txt数据到mysql的方法
2015/04/08 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
Python实现通讯录功能
2018/02/22 Python
Linux下python制作名片示例
2018/07/20 Python
对python函数签名的方法详解
2019/01/22 Python
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
python em算法的实现
2020/10/03 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
python opencv实现图像配准与比较
2021/02/09 Python
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
高中政治教学反思
2014/01/18 职场文书
公司员工检讨书
2014/02/08 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
教师工作决心书
2015/02/04 职场文书
教师工作表现自我评价
2015/03/05 职场文书
周一给客户的问候语
2015/11/10 职场文书
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers
SQL Server使用导出向导功能
2022/04/08 SQL Server