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实现的解析crontab配置文件代码
Jun 30 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
May 20 Python
python中OrderedDict的使用方法详解
May 05 Python
pandas修改DataFrame列名的方法
Apr 08 Python
Python 解决中文写入Excel时抛异常的问题
May 03 Python
详解Python函数式编程—高阶函数
Mar 29 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
Python爬虫实例——爬取美团美食数据
Jul 15 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 Python
python通过opencv调用摄像头操作实例分析
Jun 07 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
一个简洁的多级别论坛
2006/10/09 PHP
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
JavaScript 格式字符串的应用
2010/03/29 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
前端性能优化及技巧
2016/05/06 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
Vue中使用sass实现换肤功能
2018/09/07 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python 运算符 供重载参考
2009/06/11 Python
利用Python实现图书超期提醒
2016/08/02 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
Linux的文件类型
2012/03/07 面试题
创业计划书中包含的9个方面
2013/12/26 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
Python办公自动化PPT批量转换操作
2021/09/15 Python
keepalived + nginx 实现高可用方案
2022/12/24 Servers