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 17 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
Apr 23 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
使用python实现unix2dos和dos2unix命令的例子
Aug 13 Python
Python中IP地址处理IPy模块的方法
Aug 16 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
May 23 Python
使用Python-OpenCV消除图像中孤立的小区域操作
Jul 05 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
Feb 22 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 调用远程url的六种方法小结
2009/11/02 PHP
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
微信小程序实现聊天室
2020/08/21 Javascript
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
python类型强制转换long to int的代码
2013/02/10 Python
python常见的格式化输出小结
2016/12/15 Python
python如何读写csv数据
2018/03/21 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
Python 变量类型详解
2018/10/10 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
python sorted函数的小练习及解答
2019/09/18 Python
python 实现简单的FTP程序
2019/12/27 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
Pycharm调试程序技巧小结
2020/08/08 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
大一学生的职业生涯规划书范文
2014/01/19 职场文书
防灾减灾活动总结
2014/08/30 职场文书
小学生思想品德评语
2014/12/31 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书