Django中多种重定向方法使用详解


Posted in Python onJuly 17, 2019

前言

本文使用了Django1.8.2

使用场景,例如在表单一中提交数据后,需要返回到另一个指定的页面即可使用重定向方法

一、 使用HttpResponseRedirect

fuhao The first argument to the constructor is required ? the path to redirect to. This can be a fully qualified URL or an absolute path with no domain。”参数可以是绝对路径跟相对路径”

from django.http import HttpResponseRedirect 

@login_required 
def update_time(request): 
  #表单处理OR逻辑处理 
  return HttpResponseRedirect('/') #跳转到主界面 
#如果需要传参数
return HttpResponseRedirect('/commons/index/?message=error')

二 redirect和reverse

from django.core.urlresolvers import reverse 
from django.shortcuts import redirect 
#https://docs.djangoproject.com/en/1.8.2/topics/http/shortcuts/ 

@login_required 
def update_time(request): 
  #进行要处理的逻辑 
  return redirect(reverse('test.views.invoice_return_index', args=[])) #跳转到index界面 

redirect 类似HttpResponseRedirect的用法,也可以使用 字符串的url格式 /..index/?a=add
reverse 可以直接用views函数来指定重定向的处理函数,args是url匹配的值。

三、 其他

#其他的也可以直接在url中配置
from django.views.generic.simple import redirect_to 
在url中添加 (r'^test/$', redirect_to, {'url': '/author/'}), 

#我们甚至可以使用session的方法传值
request.session['error_message'] = 'test' 
redirect('%s?error_message=test' % reverse('page_index')) 
#这些方式类似于刷新,客户端重新指定url。

#重定向,如果需要携带参数,那么能不能直接调用views中 url对应的方法来实现呢,默认指定一个参数。
#例如view中有个方法baseinfo_account, 然后另一个url(对应view方法为blance_account)要重定向到这个baseinfo_account。
#url中的配置:
urlpatterns = patterns('', 
  url(r'^index/', 'account.views.index_account'), 
  url(r'^blance/', 'account.views.blance_account'), 
) 
# views.py
@login_required 
def index_account(request, args=None): 
  ​#按照正常的url匹配这么写有点不合适,看起来不规范 
  ​if args: 
    print args 
  return render(request, 'accountuserinfo.html', {"user": user}) 


@login_required   
def blance_account(request): 
  return index_account(request, {"name": "orangleliu"}) 
#测试为:
#1 直接访问 /index 是否正常 (测试ok)
#2 访问 /blance 是否能正常的重定向到 /index页面,并且获取到参数(测试ok,页面为/index但是浏览器地址栏的url仍然是/blance)
#这样的带参数重定向是可行的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之复习if语句
Oct 02 Python
python smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
python模拟表单提交登录图书馆
Apr 27 Python
Python检查ping终端的方法
Jan 26 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
Jun 26 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
pygame实现贪吃蛇游戏(上)
Oct 29 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
解析python 类方法、对象方法、静态方法
Aug 15 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 Python
200行python代码实现2048游戏
Jul 17 #Python
Django后端接收嵌套Json数据及解析详解
Jul 17 #Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 #Python
python代码编写计算器小程序
Mar 30 #Python
Django Channels 实现点对点实时聊天和消息推送功能
Jul 17 #Python
Python Django的安装配置教程图文详解
Jul 17 #Python
python按键按住不放持续响应的实例代码
Jul 17 #Python
You might like
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
生成随机字符串和验证码的类的PHP实例
2013/12/24 PHP
PHP使用递归生成文章树
2015/04/21 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
jquery对表单操作2
2011/04/06 Javascript
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
基于JS实现web端录音与播放功能
2019/04/17 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
Python编程之序列操作实例详解
2017/07/22 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
python支持多继承吗
2020/06/19 Python
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
英国自行车商店:AW Cycles
2021/02/24 全球购物
优秀村官事迹材料
2014/01/10 职场文书
买房子个人收入证明
2014/01/16 职场文书
文明风采获奖感言
2014/02/18 职场文书
网络编辑求职信
2014/04/30 职场文书
集中整治工作方案
2014/05/01 职场文书
群教班子对照检查材料
2014/08/26 职场文书
家长评语怎么写
2014/12/30 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
原生JS封装vue Tab切换效果
2021/04/28 Vue.js
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL