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中字典(dict)和列表(list)的排序方法实例
Jun 16 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
解决python报错MemoryError的问题
Jun 26 Python
Python实现随机漫步功能
Jul 09 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
Jul 25 Python
简单了解python变量的作用域
Jul 30 Python
使用pyqt 实现重复打开多个相同界面
Dec 13 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
django有外键关系的两张表如何相互查找
Feb 10 Python
如何基于python实现年会抽奖工具
Oct 20 Python
python实现一个简单RPC框架的示例
Oct 28 Python
python openssl模块安装及用法
Dec 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
php 分库分表hash算法
2009/11/12 PHP
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
使用javascript实现雪花飘落的效果
2015/01/13 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
jquery密码强度校验
2015/12/02 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
Python中特殊函数集锦
2015/07/27 Python
Django卸载之后重新安装的方法
2017/03/15 Python
python处理xml文件的方法小结
2017/05/02 Python
Django的信号机制详解
2017/05/05 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
美国现代家具购物网站:LexMod
2019/01/09 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
大学生求职计划书
2014/04/30 职场文书
介绍信怎么写
2015/01/30 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
Go语言 详解net的tcp服务
2022/04/14 Golang
详解CSS3浏览器兼容
2022/12/24 HTML / CSS