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实现sublime3的less编译插件示例
Apr 27 Python
基于Python实现的百度贴吧网络爬虫实例
Apr 17 Python
python2 与 pyhton3的输入语句写法小结
Sep 10 Python
使用 python pyautogui实现鼠标键盘控制功能
Aug 04 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 Python
解决import tensorflow导致jupyter内核死亡的问题
Feb 06 Python
解决jupyter notebook图片显示模糊和保存清晰图片的操作
Apr 24 Python
python基础入门之普通操作与函数(三)
Jun 13 Python
Python中第三方库Faker的使用详解
Apr 02 Python
Python进程池与进程锁之语法学习
Apr 11 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
很实用的一个完整email发送程序
2006/10/09 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
JavaScript的21条基本知识点
2014/03/04 Javascript
javascript制作坦克大战全纪录(2)
2014/11/27 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
Python制作简单的网页爬虫
2015/11/22 Python
Python 字典与字符串的互转实例
2017/01/13 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
麦当劳辞职信范文
2014/01/18 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
质量月活动总结
2014/08/26 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
单位工资证明范本
2015/06/12 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
2019年干货:自我鉴定
2019/03/25 职场文书
感谢信的技巧及范例
2019/05/15 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL