Django框架之登录后自定义跳转页面的实现方法

(编辑:jimmy 日期: 2024/11/15 浏览:2)

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框架之登录后自定义跳转页面的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!