场景:
比如用户正在浏览一篇文章,发现评论文章需要登录才能进行,这时候点击登陆链接转入登陆页面,输入用户名密码登陆成功以后,会自动转回原来的那篇文章所在的页面。
方法一: 静态模板中手动添加next参数实现跳转
<a class="nav-link py-md-3" href="{% url 'account_login' %}?next={{ request.path }}">登录</a>
request.get_full_path() 和request.path区别
-
都是获取request 请求的url路径
-
request.get_full_path() – 获取当前url,(包含参数)
请求一个http://127.0.0.1:8000/200/?type=10
request.get_full_path()返回的是【/200/?type=10】
request.path – 获取当前url,(但不含参数)
request.path返回的是 【/200/】
-
如果想让其正常显示(有中文的情况下),需进行如下编码处理【django 默认编码是unicode 的】
request.get_full_path().encode(‘utf-8’)
request.path.encode(‘utf-8’)
方法二: 视图views.py中实现跳转
在视图views.py中你可以使用HttpResponseRedirect方法实现跳转(如下代码所示)。
def my_review(request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/accounts/login/?next=/blog/article/15/')
else:
return HttpResponseRedirect('/blog/article/15/')
该方法的最大弊端是你需要知道用户之前尝试访问的urls是哪个,所以并不推荐。