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对小数进行除法运算的正确方法示例
Aug 25 Python
Python set集合类型操作总结
Nov 07 Python
详解Python网络爬虫功能的基本写法
Jan 28 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
解决python报错MemoryError的问题
Jun 26 Python
Python使用pyodbc访问数据库操作方法详解
Jul 05 Python
Python 字符串与数字输出方法
Jul 16 Python
python实现Dijkstra静态寻路算法
Jan 17 Python
Keras中的两种模型:Sequential和Model用法
Jun 27 Python
深入分析python 排序
Aug 24 Python
Python re.sub 反向引用的实现
Jul 07 Python
Python天气语音播报小助手
Sep 25 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 伪静态之IIS篇
2014/06/02 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
JavaScript 的继承
2011/10/01 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
Python下的twisted框架入门指引
2015/04/15 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
教师演讲稿范文
2014/01/08 职场文书
旅游业大学生创业计划书
2014/01/31 职场文书
集中采购方案
2014/06/10 职场文书
司机岗位职责说明书
2014/07/29 职场文书
授权委托书
2014/07/31 职场文书
优秀班组事迹材料
2014/12/24 职场文书
幼儿教师辞职信
2015/02/27 职场文书
运动员入场前导词
2015/07/20 职场文书
Redis批量生成数据的实现
2022/06/05 Redis
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android