Django框架之登录后自定义跳转页面的实现方法


Posted in Python onJuly 18, 2019

Django auth 登陆后页面跳转至/account/profile,修改跳转至其他页面

这几天在学习django,django功能很强大,自带的auth,基本可以满足用户注册登陆登出,简单的用户注册登陆系统使用django auth足矣。当然也不是拿来就能用的,需要自己写登陆页面的模板,也很简单。自己尝试了一下,发现一个问题,当验证登陆成功后,页面会自动跳转到/account/profile,我并不想把页面跳转到这个页面,如何修改呢?

查了一堆网页,还是官网靠谱,很简单,就在project的setting里加一句话就Okay!

LOGIN_REDIRECT_URL = ‘/index'

我这里是指定登陆成功后跳转到index页面,朋友们可以根据自己需要进行修改。就这样就okay啦!欢呼吧,然后接着解决别的问题!

========================================================================================================================================================

Django 跳转和重定向的方法:

跳转和重定向很常见的场景就是登录和注销后返回到当前页面。给你个登录和注销的例子。

比如用户正在浏览一篇文章,发现下载该文章的附件需要登录才能进行,这时候点击登陆链接转入登陆页面,输入用户名密码登陆成功以后,会自动转回原来的那篇文章所在的页面。(目前很多网站采用ajax方法弹出对话框登陆,效果更好一些)

怎么做呢?下面说的是django的实现,但是大多数的web framework都可以这么做。

注销操作:

因为不需要单独的注销页面,相对简单,利用HTTP_REFERER,Django的注销页面这样写就行:

def logout_user(request):
 logout(request)
 return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))

登录操作:

登陆操作相对复杂,因为一般都有单独的登陆页面,如果登陆成功再取HTTP_REFERER就是登陆页面自己的url,而不是之前的那个页面。

可以利用django的session,在转入登陆的时候,用的是页面的get请求,这时候在session中记录HTTP_REFERER,用户输入用户名密码进行登陆的时候(Post请求),从session中取出即可:

def login_user(request):
 if request.method == 'GET':
  #记住来源的url,如果没有则设置为首页('/')
  request.session['login_from'] = request.META.get('HTTP_REFERER', '/')
  #TODO:显示登陆页面,blablabla
 elif request.method == 'POST':
  #TODO: 用户登录操作,blablabla
  #重定向到来源的url
  return HttpResponseRedirect(request.session['login_from'])

最后的重定向,有时候需要用户感觉到被重定向回去了,就写个简单的页面告诉用户两秒以后跳转,然后改改相应的login代码就行:

<p>两秒钟后转入如下链接,如果长时间没有响应请直接点击:</p>
<p><a href="{{ refresh_url }}" rel="external nofollow" >{{ refresh_url }}</a></p>
<meta http-equiv="refresh" content="2;url={{ refresh_url }}">

总结

以上所述是小编给大家介绍的Django框架之登录后自定义跳转页面的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
pygame学习笔记(5):游戏精灵
Apr 15 Python
python实现图片变亮或者变暗的方法
Jun 01 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
python多线程共享变量的使用和效率方法
Jul 16 Python
pytorch获取vgg16-feature层输出的例子
Aug 20 Python
python multiprocessing多进程变量共享与加锁的实现
Oct 02 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
Python制作动态字符画的源码
Aug 04 Python
Python学习之os包使用教程详解
Mar 21 Python
Django数据库(SQlite)基本入门使用教程
Jul 07 Python
django页面跳转问题及注意事项
Jul 18 #Python
django框架模板语言使用方法详解
Jul 18 #Python
Django中间件基础用法详解
Jul 18 #Python
Python编写通讯录通过数据库存储实现模糊查询功能
Jul 18 #Python
Django 实现图片上传和显示过程详解
Jul 18 #Python
Django框架模型简单介绍与使用分析
Jul 18 #Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 #Python
You might like
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
JavaScript 指导方针
2007/04/05 Javascript
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
JavaScript寄生组合式继承实例详解
2018/01/06 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
利用python发送和接收邮件
2016/09/27 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
python 重定向获取真实url的方法
2018/05/11 Python
Python内存读写操作示例
2018/07/18 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
python编写简单端口扫描器
2019/09/04 Python
python实现同一局域网下传输图片
2020/03/20 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
奥巴马演讲稿
2014/01/08 职场文书
临床护士自荐信
2014/01/31 职场文书
房地产项目策划书
2014/02/05 职场文书
优秀安全员事迹材料
2014/05/11 职场文书
正风肃纪剖析材料范文
2014/10/10 职场文书
行政文员岗位职责
2015/02/04 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python
JavaScript实现简单计时器
2021/06/22 Javascript
Go语言应该什么情况使用指针
2021/07/25 Golang