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实现的检测网站挂马程序
Nov 30 Python
Python httplib模块使用实例
Apr 11 Python
python中sleep函数用法实例分析
Apr 29 Python
Python KMeans聚类问题分析
Feb 23 Python
python leetcode 字符串相乘实例详解
Sep 03 Python
Python基础教程之异常详解
Jan 10 Python
django自定义模板标签过程解析
Dec 14 Python
利用OpenCV和Python实现查找图片差异
Dec 19 Python
Python @property原理解析和用法实例
Feb 11 Python
python dict如何定义
Sep 02 Python
Python全局变量与global关键字常见错误解决方案
Oct 05 Python
Python基本的内置数据类型及使用方法
Apr 13 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设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
php发送post请求函数分享
2014/03/06 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
JS 分号引起的一段调试问题
2009/06/18 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
javascript 兼容各个浏览器的事件
2015/02/04 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
javascript中对Date类型的常用操作小结
2016/05/19 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
vue实例的选项总结
2020/06/09 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
python把1变成01的步骤总结
2019/02/27 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
使用TFRecord存取多个数据案例
2020/02/17 Python
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
幼师自荐信范文
2013/10/06 职场文书
应聘面试自我评价
2014/01/24 职场文书
街道务虚会发言材料
2014/10/20 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书
vue如何批量引入组件、注册和使用详解
2021/05/12 Vue.js