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程序与MySQL的教程
Apr 29 Python
python实现自动登录人人网并采集信息的方法
Jun 28 Python
Python爬取APP下载链接的实现方法
Sep 30 Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 Python
浅谈python3中input输入的使用
Aug 02 Python
matlab中二维插值函数interp2的使用详解
Apr 22 Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 Python
如何解决安装python3.6.1失败
Jul 01 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 Python
python爬取企查查企业信息之selenium自动模拟登录企查查
Apr 08 Python
Python import模块的缓存问题解决方案
Jun 02 Python
pycharm无法安装cv2模块问题
May 20 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之第二天
2006/10/09 PHP
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
jQuery版Tab标签切换
2011/03/16 Javascript
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
JavaScript组合设计模式--改进引入案例分析
2020/05/23 Javascript
vue 组件简介
2020/07/31 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
python绘图方法实例入门
2015/05/19 Python
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
2020/03/06 Python
2014年党员公开承诺书范文
2014/03/28 职场文书
超越自我演讲稿
2014/05/21 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
公司转让协议书
2016/03/19 职场文书
详解nodejs内置模块
2021/05/06 NodeJs
「魔法少女伊莉雅」美游粘土人开订
2022/03/21 日漫