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实现合并字典的方法
Jul 07 Python
python中的变量如何开辟内存
Jun 26 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
对Python中list的倒序索引和切片实例讲解
Nov 15 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
2020版Python学习路线图(附学习资料)
Sep 15 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
Nov 17 Python
python元组拆包实现方法
Feb 28 Python
彻底解决pip下载pytorch慢的问题方法
Mar 01 Python
python基础入门之字典和集合
Jun 13 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网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
vue自定义指令用法经典实例小结
2019/03/16 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
vue-cli3单页构建大型项目方案
2020/04/07 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
Python实现简易Web爬虫详解
2018/01/03 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
如何让python的运行速度得到提升
2020/07/08 Python
python如何爬取网页中的文字
2020/07/28 Python
python实现网页录音效果
2020/10/26 Python
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
日本无添加化妆品:HABA
2016/08/18 全球购物
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
转学证明范本
2015/06/19 职场文书
java Nio使用NioSocket客户端与服务端交互实现方式
2021/06/15 Java/Android