LoginRequiredMixin重定向中的URL片段

时间:2014-10-23 07:19:46

标签: django

我在Django 1.6项目中使用django-braces's LoginRequiredMixin。这个mixin复制了Django的login_required装饰器。

我有一个使用LoginRequiredMixin的视图,其中包含以下网址:/spa_home/#price_requests/68。如果我尝试在未登录的情况下点击此URL,则mixin会正确地将我发送到登录页面,其中包含以下请求:/accounts/login/?next=/spa_home/#price_requests/68。不幸的是,在成功登录后,URL哈希片段被取消,我只是被重定向到/spa_home/

解决此问题的最佳方法是什么?从我的应用程序中删除哈希片段将是一项巨大的努力。

1 个答案:

答案 0 :(得分:2)

问题在于浏览器解释登录URL的方式。你希望它像这样解释:

/accounts/login/?next="/spa_home/#price_requests/68"

但实际上,它看起来像这样:

"/accounts/login/?next=/spa_home/"#price_requests/68

换句话说,哈希被视为附加到登录URL本身,而不是重定向参数。

解决这个问题的方法是引用参数:

urllib.quote('/spa_home/#price_requests/68')

,它会为您提供/spa_home/%23price_requests/68,这将被正确解释。

相关问题