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简单获取数组元素个数的方法
Jul 13 Python
使用python加密自己的密码
Aug 04 Python
Python内置函数 next的具体使用方法
Nov 24 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
python抓取搜狗微信公众号文章
Apr 01 Python
如何使用python把ppt转换成pdf
Jun 29 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
pytorch标签转onehot形式实例
Jan 02 Python
win10从零安装配置pytorch全过程图文详解
May 08 Python
python 调用API接口 获取和解析 Json数据
Sep 28 Python
python 使用tkinter+you-get实现视频下载器
Nov 17 Python
Python 数据可视化神器Pyecharts绘制图像练习
Feb 28 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
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
PHPlet在Windows下的安装
2006/10/09 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
PHP调用C#开发的dll类库方法
2014/07/28 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
js与运算符和或运算符的妙用
2014/02/14 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
python数据结构树和二叉树简介
2014/04/29 Python
python新手经常遇到的17个错误分析
2014/07/30 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
使用Python对Excel进行读写操作
2017/03/30 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
Python清空文件并替换内容的实例
2018/10/22 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
python实现猜拳游戏
2020/03/04 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
中秋节礼品促销方案
2014/02/02 职场文书
集体备课反思
2014/02/12 职场文书
捐赠仪式主持词
2014/03/19 职场文书
法制宣传标语集锦
2014/06/25 职场文书
户籍证明书标准模板
2014/09/10 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
物业保安辞职信
2015/05/12 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers