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开发实例分享bt种子爬虫程序和种子解析
May 21 Python
Python中最常用的操作列表的几种方法归纳
Apr 24 Python
Python之web模板应用
Dec 26 Python
python机器学习之神经网络实现
Oct 13 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
基于Python+QT的gui程序开发实现
Jul 03 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
opencv-python图像配准(匹配和叠加)的实现
Jun 23 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
php继承的一个应用
2011/09/06 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
javascript IFrame 强制刷新代码
2009/07/23 Javascript
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
JavaScript阻止表单提交方法(附代码)
2017/08/15 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
python获得一个月有多少天的方法
2015/06/04 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
Python延时操作实现方法示例
2018/08/14 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
大学生工作推荐信范文
2013/12/02 职场文书
长辈证婚人证婚词
2014/01/09 职场文书
调解员先进事迹材料
2014/02/07 职场文书
经理任命书模板
2014/06/06 职场文书
效能风暴心得体会
2014/09/04 职场文书
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
新闻稿件写作技巧
2015/07/18 职场文书