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爬虫之打包生成exe文件
Nov 06 Python
Python实现单词拼写检查
Apr 25 Python
详解Python的Django框架中的模版相关知识
Jul 15 Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 Python
Python二叉搜索树与双向链表转换实现方法
Apr 29 Python
python 自动去除空行的实例
Jul 24 Python
在python中实现强制关闭线程的示例
Jan 22 Python
对pyqt5中QTabWidget的相关操作详解
Jun 21 Python
pandas的排序和排名的具体使用
Jul 31 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
Python3实现二叉树的最大深度
Sep 30 Python
python如何利用cv2模块读取显示保存图片
Jun 04 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
php Smarty初体验二 获取配置信息
2011/08/08 PHP
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
jquery查找tr td 示例模拟
2014/05/08 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
vue axios用法教程详解
2017/07/23 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
JS实现点击掉落特效
2021/01/29 Javascript
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
python 字符串追加实例
2019/07/20 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
详解Python 函数参数的拆解
2020/09/02 Python
python 实现端口扫描工具
2020/12/18 Python
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
Wallis官网:英国女装零售商
2020/01/21 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
linux面试题参考答案(1)
2016/01/22 面试题
开工庆典邀请函范文
2014/01/16 职场文书
2014迎新年晚会策划方案
2014/02/23 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
2015年科室工作总结
2015/04/10 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
Python闭包的定义和使用方法
2022/04/11 Python