【问题标题】:How can save the return path without HTTP_REFERRER?没有HTTP_REFERER如何保存返回路径?
【发布时间】:2020-01-03 16:17:17
【问题描述】:

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

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

   return

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

例如在模板中:

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

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

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

我想通过引用视图的 URL 传递一些东西?

【问题讨论】:

    标签: django django-views django-urls


    【解决方案1】:

    有两种方式:

    您可以在视图中使用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 的重定向实用程序进行重定向。

    【讨论】:

    • 谢谢,很遗憾,我无法使用 HTTP_REFERRER。在view 中使用 request.path 的正确语法是什么?
    • 你到底是什么意思?
    猜你喜欢
    • 2018-08-17
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 2011-04-04
    相关资源
    最近更新 更多