【问题标题】:Does Django have a built in way of getting the last app url the current user visited?Django 是否有内置方法来获取当前用户访问的最后一个应用程序 url?
【发布时间】:2009-08-04 23:17:36
【问题描述】:

我希望 Django 有一个内置的方法来获取应用程序本身访问的最后一个 url。在我写这篇文章时,我意识到做这样的事情会有一些复杂性(例如,不包括重定向的页面),但我想我会试一试。

如果没有内置的,你会使用什么策略?我的意思不仅仅是手动在会话中存储一个 url 并在重定向时引用它。当然,这会起作用,但我讨厌必须记住为每个视图都这样做的想法。似乎容易出错并且不是很优雅。

哦,我宁愿不依赖服务器特定的引用环境变量。

【问题讨论】:

    标签: python django


    【解决方案1】:

    不,Django 核心没有内置类似的东西(它不是内置的,因为它不是一种常见的使用模式)。

    就像 Javier 建议的那样,您可以制作一些中间件来满足您的需求。像这样的:

    class PreviousURLMiddleware(object):
        def process_response(request, response):
            if response.status_code == 200:
                request.session['previous_url'] = request.get_full_url()
            return response
    

    此中间件必须在您的设置中 SessionMiddleware 之后使用,以确保在此之后更新会话(文档有一个pretty picture 解释为什么会这样)。

    【讨论】:

      【解决方案2】:

      你可以只写一个中间件来做这件事,不需要在每个视图函数上重复记录代码。

      【讨论】:

      • 你是说有中间件可以做到这一点,还是我应该为此创建自己的中间件?
      • 他说你应该创建自己的中间件,我相信。
      猜你喜欢
      • 2015-10-24
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      相关资源
      最近更新 更多