登陆和注销操作在网页编程上很常见,这两个操作经常需要在操作成功以后转入发出请求的页面。

比如用户正在浏览一篇文章,发现下载该文章的附件需要登录才能进行,这时候点击登陆链接转入登陆页面,输入用户名密码登陆成功以后,会自动转回原来的那篇文章所在的页面。(目前很多网站采用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 }}">{{ refresh_url }}</a></p>
<meta http-equiv="refresh" content="2;url={{ refresh_url }}">

Django登陆以后重定向到请求登陆的页面相关推荐

  1. 未授予用户在此计算机上的请求登陆类型处理办法

    未授予用户在此计算机上的请求登陆类型处理办法 听语音 原创 | 浏览:62154 | 更新:2013-08-23 15:21 | 标签:计算机 返回 暂停 重播 播放 x <div class= ...

  2. 未授权用户在此计算机上的的请求登陆类型

    显示 "未授权用户在此计算机上的的请求登陆类型" (登录者win2000\winxp\win2003) 错误提示"没有访问资源的权限"(登录者win98) 原因 ...

  3. CAJ未授权用户在此计算机,笔记本提示未授予用户在此计算机上的请求登陆类型怎么办...

    在笔记本电脑中,不少用户都遇到这样的问题,系统重装后,在其他电脑上用GUEST账户也无法访问自己共享的文件夹了,系统提示未授予用户在此计算机上的请求登陆类型,而且系统中的GUEST账户是启用状态的.那 ...

  4. django ajax页面跳转,Django中的AJAX GET请求后重定向

    我是新的Django和AJAX(javascript). 最后,我可以发送一些参数到Django视图.这个视图呈现一个编辑表单. 我发送的参数和视图响应的形式与我需要的信息,但我不能重定向到从视图呈现 ...

  5. win7 网络打印机 未授予用户在此计算机上的请求登录类型,Win7共享打印机登录失败:未授予用户在此计算机上的请求登陆类型 解决方法...

    在Win7系统下,共享打印机是经常运用的,而有时我们会遇到共享打印机连接失败的情况,如 登录失败:未授予用户在此计算机上的请求登陆类型 如果遇到这样的问题可能是win7系统一些方面没有设置好. 解决方 ...

  6. 共享打印机未授予此用户在此计算机,win8共享打印机登录失败:未授予网友在此计算机上的请求登陆类型 处理办法...

    win8共享打印机登录失败:未授予网友在此计算机上的请求登陆类型 处理办法? 在win8系统下,共享打印机是经常运用的,而有时大家会碰到共享打印机连接失败的情况,如 登录失败:未授予网友在此计算机上的 ...

  7. win7未授予用户在此计算机上的请求登陆类型,教你win7出现未授予用户在此计算机上的请求登陆类型提示怎么办...

    最近有win7系统用户反映,电脑中guest用户明明是启用状态,但使用guest用户访问共享目录的时候却出现提示"未授予用户在此计算机上的请求登录类型",就此问题,win7出现未授 ...

  8. 共享打印机未授予此用户在此计算机,连接共享打印机提示登陆失败未授予用户在此计算机上的请求登陆类型...

    <连接共享打印机提示登陆失败未授予用户在此计算机上的请求登陆类型>由会员分享,可在线阅读,更多相关<连接共享打印机提示登陆失败未授予用户在此计算机上的请求登陆类型(3页珍藏版)> ...

  9. 远程桌面:未授予此用户在此计算机上的请求登陆类型

    环境:server 2012 R2 新建了一个账号使用远程桌面,提示'未授予此用户在此计算机上的请求登陆类型' 检查帐号是否隶属于"Remeto Desktop Users"组 添 ...

最新文章

  1. PHP_常用字符串处理函数
  2. 设计模式之Dynamic Proxy-动态代理
  3. oracle手动启动服务
  4. AI:IPPR的数学表示-CNN方法
  5. SpringCloud Zuul(十)之配置路由prefix坑
  6. 服务器系统报错kernel-power,第十二讲、Linux服务器操作系统1.ppt
  7. C#省市二级联动(王者荣耀挑选英雄为例)
  8. WordPress中缠结的自定义数据世界
  9. 思科模拟器划分子网实验报告_模拟多子网群集以设置SQL Server Always On可用性组–实验设置
  10. 建模实训报告总结_建筑实训报告总结
  11. ARINC 429 过滤介绍
  12. C# OpenCV OpenCVSharp应用实例--LCD屏幕脏污检测
  13. Jetpack Compose Modifier用法详解,如何保证高可用
  14. IE浏览器如何获取本地ip地址
  15. 系统架构的基本设计原则
  16. dis ospf brief 命令解读
  17. Google缩进40%搜索结果,微信公众号/今日头条开放搜索引擎
  18. JS判断选择的时间是否大于当前时间
  19. 工作中你应该知道的常识(深度好文)
  20. RuntimeError: CUDA out of memory. Tried to allocate 1.54 GiB...

热门文章

  1. 我是如何晋升专家岗的
  2. R语言题目及参考答案(3)
  3. M0最高优先级的中断设计
  4. Android的历史、版本与开发
  5. MFC开发IM-第十一篇、MFC设置对话框的背景颜色及设置透明
  6. stm32cubeide调试查看函数值_STM32CubeIDE使用初探
  7. ftp上传乱码_ftp上传与wordpres常规基本设置
  8. realme Q5系列核心规格曝光:80W快充加持 同价位绝无仅有
  9. 中教云教师备课云平台获北京市新技术新产品(服务)认定
  10. Redmi K40系列要做旗舰“焊门员”:生死看淡 不服就焊