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的Tornado框架中实现简单的在线代理的教程
May 02 Python
Python使用CMD模块更优雅的运行脚本
May 11 Python
python日志记录模块实例及改进
Feb 12 Python
Pycharm学习教程(4) Python解释器的相关配置
May 03 Python
Python单例模式的两种实现方法
Aug 14 Python
Python程序运行原理图文解析
Feb 10 Python
基于python神经卷积网络的人脸识别
May 24 Python
python二维码操作:对QRCode和MyQR入门详解
Jun 24 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
使用Pandas将inf, nan转化成特定的值
Dec 19 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
Python使用内置函数setattr设置对象的属性值
Oct 16 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 session常见问题集锦及解决办法总结
2007/03/18 PHP
php 将excel导入mysql
2009/11/09 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
Python操作MySQL简单实现方法
2015/01/26 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
深入解析Python中的线程同步方法
2016/06/14 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
python中的随机函数random的用法示例
2018/01/27 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
大学生学年个人总结
2015/02/15 职场文书
工作岗位职责范本
2015/02/15 职场文书
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL
JS封装cavans多种滤镜组件
2022/02/15 Javascript
springboot入门 之profile设置方式
2022/04/04 Java/Android