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读写文件方法总结
Jun 09 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
Python实现PS图像调整颜色梯度效果示例
Jan 25 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
python实现对输入的密文加密
Mar 20 Python
Python实现微信翻译机器人的方法
Aug 13 Python
python提取照片坐标信息的实例代码
Aug 14 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
Dec 19 Python
15行Python代码实现免费发送手机短信推送消息功能
Feb 27 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
Selenium浏览器自动化如何上传文件
Apr 06 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
常用PHP封装分页工具类
2017/01/14 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
JavaScript Event学习第六章 事件的访问
2010/02/07 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
2010/03/21 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
js断点调试经验分享
2017/12/08 Javascript
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
Python OS模块实例详解
2019/04/15 Python
python实现最速下降法
2020/03/24 Python
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
医学院四年学习生活的自我评价
2013/11/06 职场文书
单位实习证明怎么写
2014/01/17 职场文书
土建工程师岗位职责
2014/06/10 职场文书
企业读书活动总结
2014/06/30 职场文书
初中政治教学反思
2016/02/23 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS