开发者社区> 问答> 正文

django 怎么跳转和重定向

django 怎么跳转和重定向

展开
收起
游客ahv54x37wvm7u 2021-11-17 22:43:10 390 0
1 条回答
写回答
取消 提交回答
  • 跳转和重定向很常见的场景就是登录和注销后返回到当前页面。给你个登录和注销的例子。 比如用户正在浏览一篇文章,发现下载该文章的附件需要登录才能进行,这时候点击登陆链接转入登陆页面,输入用户名密码登陆成功以后,会自动转回原来的那篇文章所在的页面。(目前很多网站采用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代码就行:

    两秒钟后转入如下链接,如果长时间没有响应请直接点击:

    {{ refresh_url }}

    2021-11-17 22:43:31
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载