没有HTTP_REFERRER的情况下如何保存返回路径?

时间:2020-01-03 16:17:17

标签: django django-views django-urls

我有一个基于函数的视图,仅用于更新会话:

def admin_privileges(request):
   // toggle request.session['is_admin']

   return

通常,我用它来在TrueFalse之间切换会话变量。

例如在模板中:

<a href="{% url 'admin_privileges' %}">Toggle admin privileges</a> 

如何传递变量并修改return中的admin_privileges,以使用户返回到请求它的原始视图?

我不想在前端使用任何东西,也不能使用HTTP_REFERRER,因为它并不总是设置的。

我想从引用视图通过URL传递某些内容吗?

1 个答案:

答案 0 :(得分:0)

有2种方法:

您可以在视图中使用request.META.get('HTTP_REFERER'),这将返回上一页。

或(更安全的是check this link to learn why

您可以将链接(当前页面的request.path)作为参数传递给admin_privileges链接,这样:

<a href="{% url 'admin_privileges' %}?back={{ request.path }}">Toggle admin privileges</a> 

在视图中,您可以使用request.GET获取该参数,并使用Django的重定向实用程序进行重定向。