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中使用wxPython开发的一个简易笔记本程序实例
Feb 08 Python
Linux下使用python自动修改本机网关代码分享
May 21 Python
Python中的super用法详解
May 28 Python
Python基于scapy实现修改IP发送请求的方法示例
Jul 08 Python
python中如何使用正则表达式的非贪婪模式示例
Oct 09 Python
Python实现PS图像调整黑白效果示例
Jan 25 Python
对python实现二维函数高次拟合的示例详解
Dec 29 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
python+tkinter实现学生管理系统
Aug 20 Python
Python 项目转化为so文件实例
Dec 23 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
安装pytorch时报sslerror错误的解决方案
May 17 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 ftp文件上传函数(基础版)
2010/06/03 PHP
PHP中英混合字符串截取函数代码
2011/07/17 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
php GUID生成函数和类
2014/03/10 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
js与jQuery 获取父窗、子窗的iframe
2013/12/20 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
pytorch进行上采样的种类实例
2020/02/18 Python
python代码能做成软件吗
2020/07/24 Python
python上下文管理的使用场景实例讲解
2021/03/03 Python
软件测试面试题
2015/10/21 面试题
银行行长竞聘演讲稿
2014/04/23 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
党在我心中演讲稿
2014/09/02 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python